Làm cách nào để xem tệp tùy chọn được chia sẻ bằng Android Studio?


100

Tôi đang sử dụng các tùy chọn được chia sẻ để lưu trữ các giá trị nhất định cho ứng dụng của mình. Tôi muốn xem tệp nơi thông tin thực sự được lưu trữ trên điện thoại của tôi. Tôi đã tìm thấy nhiều cách để thực hiện việc này trên Eclipse, nhưng tôi đang gỡ lỗi trên Android Studio. Điện thoại của tôi đã được root. Tôi đọc rằng có quyền truy cập root là điều quan trọng để đọc các loại tệp này. Nếu không có cách nào thì tôi sẽ tra cứu cách truy cập thông tin thông qua chương trình của mình rồi xuất ra log cat. Tuy nhiên, hy vọng rằng tôi có thể xem trực tiếp tệp trên điện thoại vì nó đơn giản hơn nhiều. Cảm ơn.


Cài đặt ES File Explorer và cho phép duyệt root. Sau đó, bạn sẽ có thể mở nó trực tiếp trên điện thoại.
CurlyPaul

3
hãy thử sử dụng adb pull để tìm nạp tệp vào màn hình. adb pull /data/data/<packagename>/shared_prefs/prefs.xml
Lal

2
HOẶC goto trình khám phá tệp và trong cây tệp, tìm thư mục dữ liệu của ứng dụng của bạn trong /data/data/com.your-package/shared_prefs. Tệp ưu tiên sẽ ở đó, dưới dạng XML. Sao chép nó từ thiết bị và tận hưởng. Ở góc trên bên phải của chế độ xem File Explorer, có hai nút biểu tượng - một có đĩa và một có điện thoại di động. Các nút này sẽ cho phép bạn sao chép các tệp từ và sang điện thoại / trình mô phỏng tương ứng.
Lal

1
Đối với một số lý do prefs tôi xml tập tin được gọi là <PACKAGENAME> _preferences.xml
JPM

Câu trả lời:


94

Từ Android Studio, khởi động Trình theo dõi thiết bị Android, đi tới File Explorer và duyệt qua "/ data / data / <tên gói của bạn> / shared_prefs /". Bạn sẽ tìm thấy XML ở đó ... và bạn cũng có thể sao chép nó để kiểm tra.

Nếu bạn có thiết bị chưa root, bạn không thể thực hiện điều đó trực tiếp từ Android Studio. Tuy nhiên, bạn có thể truy cập tệp adb shellmiễn là ứng dụng của bạn là phiên bản gỡ lỗi.

adb shell
run-as your.app.id
chmod 777 shared_prefs/your.app.id_preferences.xml
exit # return to default user
cp /data/data/your.app.id/shared_prefs/your.app.id_preferences.xml /sdcard

Sau đó, bạn có thể kéo tệp từ thư mục / sdcard với adb.


Tôi không thể truy cập thư mục này từ Device Monitor. Có cần root không?
Marian Klühspies,

2
Phương pháp thứ hai hoạt động cho các thiết bị không root. Sau khi sao chép tệp vào thẻ sd, bạn có thể thoát khỏi adb và chạy adb pull "/ sdcard / your_preferences_file" và bạn sẽ nhận được tệp xml trong thư mục hiện tại mà bạn có thể kiểm tra.
Bebop_

4
Bạn thực sự có thể lấy thông tin này từ trình giả lập mà không cần root, nếu bạn có thể gỡ lỗi theo cách đó. Nếu bạn đang sử dụng thiết bị vật lý, bạn sẽ cần root.
Booger

3
tìm trình khám phá tệp thiết bị ở góc dưới cùng bên phải của AndroidStudio. Nó sẽ cung cấp cho bạn dễ dàng truy cập vào hệ thống tập tin thiết bị
Maksim Turaev

2
Sử dụng thiết bị File Explorer, tôi có thể truy cập vào các ưu đãi chia sẻ mà không cần truy cập root
Devansh Maurya

77

Device File Explorer là một phần của Android Studio 3.x thực sự tốt để khám phá (các) tệp tùy chọn, các mục bộ nhớ cache hoặc cơ sở dữ liệu của bạn.

  1. Shared Preferences / data / data // thư mục shared_prefs

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

Nó trông giống như thế này

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

Để mở Trình khám phá tệp thiết bị:

Nhấp vào View> Tool Windows> Device File Explorer hoặc nhấp vào nút Device File Explorer trên thanh cửa sổ công cụ.

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


13
Mở Device File Explorer (Phía dưới bên phải màn hình).
Apit John Ismail 17/12/18

47

Stetho

Bạn có thể sử dụng http://facebook.github.io/stetho/ để truy cập các tùy chọn được chia sẻ của mình trong khi ứng dụng của bạn đang ở chế độ gỡ lỗi. Không có gốc

đặc trưng:

  1. xem và chỉnh sửa các tài liệu tham khảo được chia sẻ
  2. xem và chỉnh sửa sqLite db
  3. view view heirarchy
  4. giám sát các yêu cầu mạng http
  5. xem luồng từ màn hình của thiết bị
  6. và hơn thế nữa....

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

Thiết lập cơ bản:

  1. trong phần thêm build.gradle compile 'com.facebook.stetho:stetho:1.5.0'
  2. trong phần thêm onCreate () của ứng dụng Stetho.initializeWithDefaults(this);
  3. trong Chrome trên PC của bạn, hãy truy cập chrome: // register /

CẬP NHẬT: Flipper

Flipper là một giải pháp thay thế mới hơn từ facebook. Nó có nhiều tính năng hơn nhưng hiện tại chỉ có thể viết cho Mac, khó định cấu hình hơn một chút và thiếu tính năng gỡ lỗi cơ sở dữ liệu, trong khi làm sáng tỏ trình kiểm tra bố cục nâng cao cực kỳ

Bạn cũng có thể sử dụng đề xuất @Jeffrey:

  • Mở Device File Explorer (Phía dưới bên phải màn hình)
  • Truy cập data / data / com.yourAppName / shared_prefs

Điều này có thể hoạt động trên trình giả lập không? Tôi dường như không thể làm cho nó làm việc
EduardoMaia

@EduardoMaia Nó nên. Tôi sử dụng nó với giả lập mỗi ngày. Bạn có thể tạo một câu hỏi bằng ảnh chụp màn hình, vì vậy tôi sẽ cố gắng giúp bạn.
Maksim Turaev

@EduardoMaia Bạn có thể thử làm như sau: 1. Nhân bản kho stetho facebook. 2. Nhập dự án này vào Android Studio MỚI NHẤT (File-> Import -> "select settings.gradle") 3. đồng ý cập nhật plugin gradle. 4. Khởi động Trình giả lập Android (trong trường hợp của tôi là API 24) 5. Khởi chạy stetho-sample (chọn nó từ menu cấu hình chạy bên cạnh mũi tên màu xanh lục 6. Trên PC của bạn, mở trình duyệt Chrome mới nhất 7. truy cập chrome: // register address 8. đã chọn trình giả lập của bạn trong danh sách. 9. Trong cửa sổ đã mở, hãy chuyển đến tab Tài nguyên. 10. Tìm các tùy chọn được chia sẻ của bạn trong menu LocalStorage ở phía bên trái. 11. Trong ứng dụng chơi với cờ boolean
Maksim Turaev

Tôi đã khắc phục sự cố của mình ngày hôm qua mà không cần xem các prefs được chia sẻ. Nhưng tôi sẽ thử từng bước này vào ngày khác. Cảm ơn.
EduardoMaia

14

Bạn chỉ cần tạo một Hoạt động đặc biệt cho mục đích gỡ lỗi:

@SuppressWarnings("unchecked")
public void loadPreferences() {
// create a textview with id (tv_pref) in Layout.
TextView prefTextView;
prefTextView = (TextView) findViewById(R.id.tv_pref);
    Map<String, ?> prefs = PreferenceManager.getDefaultSharedPreferences(
            context).getAll();
    for (String key : prefs.keySet()) {
        Object pref = prefs.get(key);
        String printVal = "";
        if (pref instanceof Boolean) {
            printVal =  key + " : " + (Boolean) pref;
        }
        if (pref instanceof Float) {
            printVal =  key + " : " + (Float) pref;
        }
        if (pref instanceof Integer) {
            printVal =  key + " : " + (Integer) pref;
        }
        if (pref instanceof Long) {
            printVal =  key + " : " + (Long) pref;
        }
        if (pref instanceof String) {
            printVal =  key + " : " + (String) pref;
        }
        if (pref instanceof Set<?>) {
            printVal =  key + " : " + (Set<String>) pref;
        }
        // Every new preference goes to a new line
        prefTextView.append(printVal + "\n\n");     
    }
}
// call loadPreferences() in the onCreate of your Activity.

Điều này rất hữu ích, nhưng nó không hoàn toàn phù hợp với nhu cầu của tôi. Tôi thêm một chỉnh sửa cho phép nhiều file sở thích chia sẻ
Christopher Rucinski

Cảm ơn, tôi chỉ gặp khó khăn trong việc tìm hiểu làm thế nào để chấp nhận chỉnh sửa
cYrixmorten

Nó đã bị từ chối bởi những người khác. Họ nói rằng đó phải là câu trả lời của riêng mình, vì vậy tôi đặt nó như một câu trả lời mới. Tôi ban đầu chỉ chỉnh sửa câu trả lời của bạn vì tôi chỉ có thể làm những gì tôi đã làm khi tôi thấy câu trả lời của bạn.
Christopher Rucinski

Được rồi :-) vâng xảy ra với tôi sau đó nó phải được xem xét lại bởi những người khác
cYrixmorten

13

Android Studio -> Device File Explorer (góc dưới bên phải) -> data -> data -> {package.id} -> shared-prefs

Lưu ý: Bạn cần kết nối thiết bị di động với android studio và ứng dụng đã chọn phải ở chế độ gỡ lỗi


10

Đây là một bài đăng cũ, nhưng tôi nên đặt câu trả lời bằng hình ảnh ở đây vì câu hỏi là về việc xem SharedPreferences.xmlbằng Android Studio. Vì vậy, đây là nó đi.

Đi tới Công cụ -> Màn hình thiết bị Android. Mở màn hình thiết bị bằng cách nhấp vào nó.

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

Sau đó, bạn cần chọn tab File Explorer trong màn hình thiết bị. Tìm thư mục dữ liệu và tìm một thư mục dữ liệu khác bên trong nó. Nó sẽ chứa một thư mục có tên gói ứng dụng của bạn và sẽ có thư mục mong muốn SharedPreferences.xml.

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

Chọn SharedPreferences.xmltệp, sau đó kéo và lưu tệp trong máy tính của bạn bằng nút được đánh dấu ở góc trên bên phải của hình ảnh trên.

Tôi đã sử dụng trình giả lập thiết bị.


1
Nhờ bài đăng của bạn, tôi đã biết được về developer.android.com/studio/debug/device-file-explorer , đây là cách mới để thực hiện điều tương tự như bạn đang giải thích ở đây.
malarres

Thật tuyệt khi biết rằng tôi có thể giúp đỡ! Bạn được chào đón nhất.
Reaz Murshed

4

Một hoặc Nhiều Tệp Sở thích Được Chia sẻ

Nếu bạn có nhiều Shared Preferencetệp, thì đây là một cách hay để hiển thị tất cả chúng, nhưng bạn cũng có thể chuyển vào 1 tên tệp.

  • loadSharedPrefs("pref_name");

  • loadSharedPrefs("shared_pref1", "shared_pref2", "shared_pref3");

Chọn một trong các tùy chọn sau để phù hợp với nhu cầu của bạn ...

Giá trị loại đơn

public void loadSharedPrefs(String ... prefs) {

    // Logging messages left in to view Shared Preferences. I filter out all logs except for ERROR; hence why I am printing error messages.

    Log.i("Loading Shared Prefs", "-----------------------------------");
    Log.i("----------------", "---------------------------------------");

    for (String pref_name: prefs) {

        SharedPreferences preference = getSharedPreferences(pref_name, MODE_PRIVATE);
        for (String key : preference.getAll().keySet()) {

            Log.i(String.format("Shared Preference : %s - %s", pref_name, key),
                  preference.getString(key, "error!"));

        }

        Log.i("----------------", "---------------------------------------");

    }

    Log.i("Finished Shared Prefs", "----------------------------------");

}

Giá trị nhiều loại

public void loadSharedPrefs(String ... prefs) {

    // Define default return values. These should not display, but are needed
    final String STRING_ERROR = "error!";
    final Integer INT_ERROR = -1;
    // ...
    final Set<String> SET_ERROR = new HashSet<>(1);

    // Add an item to the set
    SET_ERROR.add("Set Error!");

    // Loop through the Shared Prefs
    Log.i("Loading Shared Prefs", "-----------------------------------");
    Log.i("------------------", "-------------------------------------");

    for (String pref_name: prefs) {

        SharedPreferences preference = getSharedPreferences(pref_name, MODE_PRIVATE);
        Map<String, ?> prefMap = preference.getAll();

        Object prefObj;
        Object prefValue = null;

        for (String key : prefMap.keySet()) {

            prefObj = prefMap.get(key);

            if (prefObj instanceof String) prefValue = preference.getString(key, STRING_ERROR);
            if (prefObj instanceof Integer) prefValue = preference.getInt(key, INT_ERROR);
            // ...
            if (prefObj instanceof Set) prefValue = preference.getStringSet(key, SET_ERROR);

            Log.i(String.format("Shared Preference : %s - %s", pref_name, key),
                  String.valueOf(prefValue));

        }

        Log.i("------------------", "-------------------------------------");

    }

    Log.i("Loaded Shared Prefs", "------------------------------------");

}

}

Đầu ra Logcat

Shared PreferenceGiá trị của tôi là tất cả String, nhưng đây là đầu ra bằng cách sử dụng một trong 2 phương pháp ở trên ...

I/Loading Shared Prefs -----------------------------------
I/------------------﹕ -------------------------------------
I/Shared Preference : FAVORITE - 135397 Jurassic World
I/Shared Preference : FAVORITE - 87101 Terminator Genisys
I/Shared Preference : FAVORITE - 177677 Mission: Impossible  Rogue Nation
I/------------------﹕ -------------------------------------
I/Shared Preference : WATCHED - 177677 Mission: Impossible  Rogue Nation
I/Shared Preference : WATCHED - 157336 Interstellar
I/Shared Preference : WATCHED - 135397 Jurassic World
I/Shared Preference : WATCHED - 87101 Terminator Genisys
I/------------------﹕ -------------------------------------
I/Shared Preference : WILL_WATCH - 211672 Minions
I/Shared Preference : WILL_WATCH - 102899 Ant-Man
I/------------------﹕ -------------------------------------
I/Loaded Shared Prefs ------------------------------------

4

Một cách đơn giản khác là sử dụng ứng dụng root explorer trên điện thoại của bạn.

Sau đó, truy cập /data/data/package name/shared preferences folder/name of your preferences.xml, bạn có thể sử dụng ES File explorer , và truy cập rootthiết bị của bạn, không sd card.


1
Điều này không cung cấp câu trả lời cho câu hỏi. Để phê bình hoặc yêu cầu làm rõ từ tác giả, hãy để lại nhận xét bên dưới bài đăng của họ - bạn luôn có thể nhận xét về bài đăng của chính mình và khi bạn có đủ uy tín, bạn sẽ có thể nhận xét về bất kỳ bài đăng nào . - Từ xét
Luca Detomi

@LucaDetomi bạn biết những gì tôi ra khỏi đây
user5291072

Câu trả lời của bạn đã bị gắn cờ là quá ngắn. Câu trả lời phải chứa thông tin chi tiết để người dùng hiểu "tại sao", đó có thể là câu trả lời hay và có thể là câu trả lời tốt nhất. Tôi đề nghị bạn bổ sung thêm chi tiết mà giúp đỡ để hiểu nguyên tắc và có thể thích ứng với nó đến các vấn đề tương tự khác
Luca Detomi

4

Để mở được chia sẻ preferencetrong studio android

Mở tệp trình khám phá thiết bị từ phía bên phải- data> data>> shared_prefs

tìm hình ảnh đính kèm để có thêm mô tả



2

Chạy ứng dụng trong Trình mô phỏng sau khi bạn chèn một số dữ liệu, chỉ cần đóng ứng dụng.

Bây giờ, hãy mở DDMS hoặc Android Monitor và chọn trình mô phỏng của bạn, ở bên phải, bạn có thể thấy File Explorer, tìm thư mục Data trong đó và tìm gói ứng dụng mà bạn đã tạo, trong đó bạn có thể tìm thấy tệp tùy chọn chia sẻ đang mở. nó, bạn có thể xem tệp XML, nhấp vào nó và nhấp vào kéo tệp từ nút thiết bị ở góc trên cùng bên phải.

Tệp XML sẽ được lưu ở vị trí mong muốn của bạn, sau đó bạn có thể mở nó bằng bất kỳ trình soạn thảo nào như notepad ++ và có thể xem dữ liệu bạn đã nhập.


Trong Android Studio 3.0 , tôi tìm thấy nó trong Device File Explorer > dữ liệu> dữ liệu> (tên gói)> shared_prefs> (tên gói) _preferences.xml
Josselin

2

Trong Device File Explorer, hãy làm theo đường dẫn dưới đây: -

/data/data/com.**package_name**.test/shared_prefs/com.**package_name**.test_preferences.xml

1

Tôi luôn thấy các lệnh này hữu ích trong bảng điều khiển:

  1. Tìm đúng tên tệp

    adb shell

    ls /data/data/com.your.package/shared_prefs

  2. Đưa tệp vào thư mục cục bộ

    adb pull /data/data/com.your.package/shared_prefs/the_file_you_want $local_dir

  3. Kiểm tra nó trong của bạn $local_dir.


1

Nếu bạn đang sử dụng trình giả lập, bạn có thể xem sharedPrefs.xmltệp trên thiết bị đầu cuối bằng các lệnh sau:

  • adb root
  • cat /data/data/<project name>/shared_prefs/<xml file>

sau đó bạn có thể sử dụng adb unrootnếu không muốn giữ thiết bị ảo đã root.

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.