เก็บการตั้งค่าที่แชร์ไว้ที่ไหน


147

ที่ใดในโครงการ Eclipse อาจพบไฟล์กำหนดลักษณะที่แชร์


ฉันทราบว่าการกำหนดค่าตามความชอบแบบแบ่งใช้.xmlถูกเก็บในข้อมูล แต่เก็บไว้ที่ไหนก่อนที่จะถูกติดตั้ง ในรูปแบบ. smali?
sharath3589

คำตอบ:


241

SharedPreferences ถูกเก็บไว้ในไฟล์ xml ในโฟลเดอร์ data app เช่น

/data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml

หรือการตั้งค่าเริ่มต้นที่:

/data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PACKAGE_NAME_preferences.xml

SharedPreferences ที่เพิ่มระหว่างรันไทม์จะไม่ถูกเก็บไว้ในโครงการ Eclipse

หมายเหตุ: การเข้าถึง/data/data/<package_name>ต้องใช้สิทธิ์ superuser


3
/data/data/<package>/shared_prefs/<package>_preferences.xmlเริ่มต้นที่ใช้ร่วมกันแฟ้มการตั้งค่าของจริงจะเป็น:
inazaruk

@ inazaruk เป็นชื่อแพคเกจแบบเต็มแม้ว่าฉันจะเห็นการใช้งานแบบผสม/<package>_preferences.xmlและ/<package>.xmlบนอุปกรณ์ บางทีมันขึ้นอยู่กับระดับ API ของแอพ
Aleadam

1
โปรดทราบว่าฉันกำลังดำเนินการเกี่ยวกับการตั้งค่าที่ใช้ร่วมกันเริ่มต้น ดูเหมือนว่าชื่อไฟล์จะเหมือนกันเสมอสำหรับพวกเขา ดูครั้งแรกสำหรับการกระทำPreferenceManager.java, getDefaultSharedPreferencesฟังก์ชั่นที่นี่: android.git.kernel.org/?p=platform/frameworks/... และมันก็ไม่ได้เปลี่ยนแปลงในเวอร์ชั่นล่าสุดPrefencesManager.javeเช่นกัน: android.git.kernel.org/?p=platform/frameworks/ …
inazaruk

มีวิธีใดบ้างที่จะได้รับพา ธ จากระบบและไม่ใช่รหัสยาก? ContextImpl.java นำไปใช้ใน getPreferencesDir ฟังก์ชั่นส่วนตัว, มันจะมีประโยชน์ที่จะได้รับสิ่งนี้ในขณะทำงาน
ตัวชี้ Null

คุณสามารถใช้ FIle ใหม่ (context.getFilesDir (). getParent (), "shared_prefs") ใช้งานได้กับ Nexus 5 แต่ไม่แน่ใจเกี่ยวกับผู้ผลิตรายอื่น
gswierczynski

9

การกำหนดค่าตามความชอบสามารถตั้งค่าในโค้ดหรือสามารถพบได้ใน res / xml / preferences.xml คุณสามารถอ่านเพิ่มเติมเกี่ยวกับการตั้งค่าบนเว็บไซต์ Android SDK


4
คุณต้องสร้างมัน - ตราบใดที่คุณได้สร้างโครงการ Android คุณสามารถคลิกขวาที่ไดเรกทอรี "res" และเพิ่มโฟลเดอร์ใหม่ที่ชื่อว่า 'xml' โฟลเดอร์ "พิเศษ" อื่น ๆ นั้นเป็นแอนิเมชั่น drawable โครงร่างเมนูดิบและค่า
JasCav

6

เพียงเพื่อช่วยคุณประหยัดเวลา ...

ใน Galaxy S v.2.3.3 การตั้งค่าที่ใช้ร่วมกันจะไม่ถูกเก็บไว้ใน:/data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml

แต่ตอนนี้อยู่ใน: /dbdata/databases/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml

ฉันเชื่อว่าพวกเขาเปลี่ยนแปลงสิ่งนี้ใน 2.3


1
มันเหมือนกันใน 2.2? ฉันไม่พบไฟล์ข้อมูล / ที่ใดก็ได้ในโครงการของฉันทั้งในคราสหรือที่ตั้งโครงการ
ราโมท

@pramod ไม่ได้อยู่ใน eclipse - นี่คือเส้นทางบนโครงสร้างไฟล์อุปกรณ์ที่แท้จริง
Richard Le Mesurier

@Pramod เห็นมันในมุมมอง file explorer และมีใน/data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml
Akhil Jain

2
/dbdata/ไม่มีอยู่ในอุปกรณ์ JB ของฉัน
rekire

6

ฉันพยายามหาเส้นทางของการตั้งค่าที่แชร์ด้านล่างเช่นนี้มันใช้ได้สำหรับฉัน

File f = getDatabasePath("MyPrefsFile.xml");

if (f != null)
    Log.i("TAG", f.getAbsolutePath());

5

ข้อมูลจะถูกเก็บไว้ในอุปกรณ์ในพื้นที่ข้อมูลส่วนตัวของแอปพลิเคชันของคุณ มันไม่ได้อยู่ในโครงการ Eclipse


3

การตั้งค่าที่ใช้ร่วมกันเป็นคู่ของคีย์ / ค่าที่เราสามารถจัดเก็บได้ เป็นประเภทการจัดเก็บภายในซึ่งหมายความว่าเราไม่จำเป็นต้องสร้างฐานข้อมูลภายนอกเพื่อจัดเก็บ หากต้องการดูไปที่ 1) ไปที่ดูในแถบเมนู เลือกเครื่องมือ Windows 2) คลิกที่ Device File Explorer 3) Device File Explorer เปิดขึ้นทางด้านขวามือ 4) ค้นหาโฟลเดอร์ข้อมูลและคลิกที่มัน 5) ในโฟลเดอร์ข้อมูลคุณสามารถเลือกโฟลเดอร์ข้อมูลอื่น 6) ลองค้นหาชื่อแพ็คเกจในโฟลเดอร์ข้อมูลนี้ ตัวอย่าง: com.example.com 7) จากนั้นคลิกที่ shared_prefs และเปิดไฟล์. xml

หวังว่านี่จะช่วยได้!


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.