Sở thích được chia sẻ được lưu trữ ở đâu?


147

Trường hợp trong một dự án Eclipse có thể gặp một tệp tùy chọn chia sẻ?


Tôi biết rằng sở thích được chia sẻ được lưu trữ trong dữ liệu, nhưng nó được lưu trữ ở đâu trước khi được cài đặt; ở định dạng .smali?
sharath3589

Câu trả lời:


241

SharedPreferences được lưu trữ trong một tệp xml trong thư mục dữ liệu ứng dụng, nghĩa là

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

hoặc các tùy chọn mặc định tại:

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

SharedPreferences được thêm trong thời gian chạy không được lưu trữ trong dự án Eclipse.

Lưu ý: Truy cập /data/data/<package_name>yêu cầu đặc quyền siêu người dùng


3
Tệp tùy chọn chia sẻ mặc định thực sự sẽ là : /data/data/<package>/shared_prefs/<package>_preferences.xml.
inazaruk

@inazaruk Đây thực sự là tên gói đầy đủ, mặc dù tôi thấy việc sử dụng hỗn hợp /<package>_preferences.xml/<package>.xmltrên các thiết bị. Có lẽ nó phụ thuộc vào cấp độ API của ứng dụng?
Aleadam

1
Lưu ý rằng tôi đã lấy về tùy chọn chia sẻ mặc định . Có vẻ như tên tệp luôn giống nhau đối với họ. Xem cam kết ban đầu cho PreferenceManager.java, getDefaultSharedPreferenceschức năng tại đây: android.git.kernel.org/?p=pl platform / frameworks / Lỗi . Và nó đã không thay đổi trong phiên bản mới nhất của PrefencesManager.javequá: android.git.kernel.org/?p=platform/frameworks/...
inazaruk

Bất kỳ cách nào để có được đường dẫn từ hệ thống, và không khó mã hóa nó? ContextImpl.java triển khai nó trong private getPreferencesDir func, sẽ rất hữu ích khi có được điều này trong thời gian chạy.
Con trỏ Null

Bạn có thể sử dụng FIle mới (context.getFilesDir (). GetParent (), "shared_prefs"). Nó không hoạt động trên Nexus 5, không chắc chắn về các nhà sản xuất khác.
gswierczynski

9

Tùy chọn có thể được đặt trong mã hoặc có thể được tìm thấy trong res / xml / Preferences.xml. Bạn có thể đọc thêm về các tùy chọn trên trang web SDK Android.


4
Bạn phải tạo nó - miễn là bạn đã tạo một dự án Android, sau đó bạn có thể nhấp chuột phải vào thư mục "res" và thêm một thư mục mới có tên 'xml'. Các thư mục "đặc biệt" khác là hình động, có thể vẽ, bố cục, menu, thô và giá trị.
JasCav

6

Chỉ để tiết kiệm thời gian của bạn ...

Trên Galaxy S v.2.3.3 Tùy chọn chia sẻ của tôi không được lưu trữ trong:/data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml

nhưng hiện đang nằm ở: /dbdata/databases/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml

Tôi tin rằng họ đã thay đổi điều này trong 2.3


1
Có giống nhau trong 2.2 không? Tôi không thể tìm thấy tập tin / dữ liệu ở bất cứ đâu trong dự án của tôi hoặc trong nhật thực hoặc vị trí dự án.
Pramod

@pramod không trong nhật thực - đây là đường dẫn trên cấu trúc tệp thiết bị thực tế.
Richard Le Mesurier

@Pramod thấy nó trong chế độ xem tệp thám hiểm và ở đó trong /data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml
Akhil Jain

2
/dbdata/ không tồn tại trên thiết bị JB của tôi
thiệu lại vào

6

Tôi chỉ cố gắng để có được đường dẫn của các tùy chọn chia sẻ bên dưới như thế này. Đây là công việc cho tôi.

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

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

5

Dữ liệu được lưu trữ trên thiết bị, trong vùng dữ liệu riêng tư của ứng dụng của bạn. Nó không nằm trong một dự án Eclipse.


3

Tùy chọn chia sẻ là cặp khóa / giá trị mà chúng ta có thể lưu trữ. Chúng là loại lưu trữ nội bộ có nghĩa là chúng tôi không phải tạo cơ sở dữ liệu bên ngoài để lưu trữ. Để xem nó, 1) Chuyển đến Xem trong thanh menu. Chọn Công cụ Windows. 2) Nhấp vào Trình khám phá tệp thiết bị. 3) Device File Explorer mở ra ở phía bên tay phải. 4) Tìm thư mục dữ liệu và nhấp vào nó. 5) Trong thư mục dữ liệu, bạn có thể chọn thư mục dữ liệu khác. 6) Cố gắng tìm kiếm tên gói của bạn trong thư mục dữ liệu này. Ví dụ: com.example.com 7) Sau đó bấm vào shared_prefs và mở tệp .xml.

Hi vọng điêu nay co ich!


1

Sử dụng thư viện http://facebook.github.io/stetho/ để truy cập bộ nhớ cục bộ của ứng dụng bằng các công cụ kiểm tra chrome. Bạn có thể tìm thấy tệp sharedPreference trong Bộ nhớ cục bộ -> <tên gói ứng dụng của bạn>

nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.