Android Studio'yu kullanarak paylaşılan tercihler dosyasını nasıl görüntüleyebilirim?


104

Uygulamam için belirli değerleri depolamak için paylaşılan tercihleri ​​kullanıyorum. Bilgilerin gerçekte telefonumda depolandığı dosyayı görmek istiyorum. Eclipse'de bunu yapmanın birçok yolunu buldum, ancak Android Studio'da hata ayıklama yapıyorum. Telefonum köklü. Bu tür dosyaları okumak için kök erişimine sahip olmanın önemli olduğunu okudum. Eğer bir yol yoksa, o zaman bilgiye programım aracılığıyla nasıl erişeceğime bakacağım ve sonra onu cat günlüğüne çıkaracağım. Yine de umarım, çok daha basit olduğu için dosyayı doğrudan telefonda görüntüleyebilirim. Teşekkürler.


ES Dosya Gezgini'ni yükleyin ve kök taramayı etkinleştirin. Daha sonra doğrudan telefonda açabileceksiniz.
CurlyPaul

3
dosyayı masaüstüne getirmek için adb pull kullanmayı deneyin. adb pull /data/data/<packagename>/shared_prefs/prefs.xml
Lal

2
VEYA dosya gezginine gidin ve dosya ağacında /data/data/com.your-package/shared_prefs altında uygulamanızın veri klasörünü bulun. Tercih dosyası XML olarak orada olacaktır. Cihazdan kopyalayın ve keyfini çıkarın. Dosya Gezgini görünümünün sağ üst köşesinde, biri diskli diğeri cep telefonlu olmak üzere iki simge düğmesi vardır. Bu düğmeler, dosyaları sırasıyla telefondan / emülatörden kopyalamanıza izin verir.
Lal

1
Bazı nedenlerden dolayı prefs xml dosyama <PACKAGENAME> _preferences.xml
JPM

Yanıtlar:


97

Android Studio'dan Android Device Monitor'ü başlatın, Dosya Gezgini'ne gidin ve "/ data / data / <paketinizin adı> / shared_prefs /" sayfasına göz atın. XML'yi orada bulacaksınız ... ve ayrıca inceleme için kopyalayabilirsiniz.

Köklü olmayan bir cihazınız varsa, bunu doğrudan Android Studio'dan yapmanız mümkün değildir. Ancak, adb shelluygulamanız hata ayıklama sürümü olduğu sürece dosyaya erişebilirsiniz .

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

Bundan sonra dosyayı / sdcard dizininden adb ile çekebilirsiniz.


Bu klasöre Aygıt Monitörü'nden erişemiyorum. Kök gerekli mi?
Marian Klühspies

2
İkinci yöntem köklü olmayan cihazlar için işe yarar. Dosyayı sd karta kopyaladıktan sonra, adb'den çıkıp adb pull "/ sdcard / your_preferences_file" dosyasını çalıştırabilirsiniz ve mevcut dizininizde inceleyebileceğiniz bir xml dosyası alırsınız.
Bebop_

4
Bu şekilde hata ayıklayabiliyorsanız, bu bilgiyi kök olmadan bir emülatörden alabilirsiniz. Fiziksel bir cihaz kullanıyorsanız, root'a ihtiyacınız olacak.
Booger

3
AndroidStudio'nun sağ alt köşesinde cihaz dosyası gezgini arayın. Cihaz dosya sistemine kolay erişim sağlayacak
Maksim Turaev

2
Aygıt Dosya Gezgini'ni kullanarak, paylaşılan tercihlere kök erişimi olmadan erişebiliyorum
Devansh Maurya

84

Android Studio 3.x'in bir parçası olan Cihaz Dosyası Gezgini, tercih dosyalarınızı, önbellek öğelerinizi veya veritabanınızı keşfetmek için gerçekten iyidir.

  1. Paylaşılan Tercihler / data / data // shared_prefs dizini

görüntü açıklamasını buraya girin

Bunun gibi bir şeye benziyor

görüntü açıklamasını buraya girin

Aygıt Dosya Gezgini'ni açmak için:

Görünüm> Araç Pencereleri> Aygıt Dosya Gezgini'ne tıklayın veya araç pencere çubuğundaki Aygıt Dosyası Gezgini düğmesine tıklayın.

görüntü açıklamasını buraya girin


13
Aygıt Dosya Gezgini'ni açın (ekranın Sağ Altında).
Apit John Ismail

47

Stetho

Uygulamanız hata ayıklama modundayken, paylaşılan tercihlerinize erişmek için http://facebook.github.io/stetho/ adresini kullanabilirsiniz . Köksüz

özellikleri:

  1. paylaşılan tercihleri ​​görüntüleyin ve düzenleyin
  2. sqLite db'yi görüntüleyin ve düzenleyin
  3. hiyerarşiyi görüntüle
  4. http ağ isteklerini izle
  5. cihazın ekranından akışı görüntüleyin
  6. ve dahası....

görüntü açıklamasını buraya girin

Temel kurulum:

  1. build.gradle içinde ekle compile 'com.facebook.stetho:stetho:1.5.0'
  2. uygulamanın onCreate () bölümüne ekle Stetho.initializeWithDefaults(this);
  3. PC'nizdeki Chrome'da chrome: // inspect /

GÜNCELLEME: Flipper

Flipper , facebook'tan daha yeni bir alternatiftir. Daha fazla özelliğe sahiptir, ancak zaman için yazma işlemi yalnızca Mac için kullanılabilir, yapılandırması biraz daha zordur ve veri tabanı hata ayıklamasından yoksundur, son derece gelişmiş bir düzen denetçisi sunar

Ayrıca @ Jeffrey önerisini de kullanabilirsiniz:

  • Aygıt Dosya Gezgini'ni Aç (Ekranın Alt Sağında)
  • Data / data / com.yourAppName / shared_prefs adresine gidin

Bu emülatörler üzerinde çalışabilir mi? İşe yarayacak gibi görünmüyorum
EduardoMaia

@EduardoMaia Olmalı. Her gün emülatör ile kullanıyorum. Ekran görüntüleriyle soru oluşturabilirsiniz, ben de size yardımcı olmaya çalışacağım.
Maksim Turaev

@EduardoMaia Aşağıdakileri yapmayı deneyebilirsiniz: 1. facebook stetho deposunu klonlayın. 2. Bu projeyi EN SON Android Studio'ya aktarın (Dosya-> İçe Aktar -> "settings.gradle'ı seçin") 3. gradle eklentisini güncellemeyi kabul edin. 4. Android Emulator'u başlatın (benim durumumda API 24) 5. stetho-sample'ı başlatın (yeşil okun yanındaki çalıştırma yapılandırma menüsünden seçin 6. Bilgisayarınızda en son Chrome tarayıcısını açın 7. chrome: // adresini inceleyin 8. emülatörünüzü listeden seçin 9. Açılan pencerede Kaynaklar sekmesine gidin 10. Sol taraftaki LocalStorage menüsü altında paylaşılan tercihlerinizi bulun 11. Boole bayrağıyla uygulamada oynatma
Maksim Turaev

Dün paylaşılan tercihleri ​​görüntülemeye gerek kalmadan sorunumu çözdüm. Ama bunu adım adım başka bir gün deneyeceğim. Teşekkürler.
EduardoMaia

15

Android Studio -> Cihaz Dosyası Gezgini (sağ alt köşe) -> veri -> veri -> {package.id} -> paylaşılan tercihler

Not: Mobil cihazı android stüdyosuna bağlamanız gerekir ve seçilen uygulama hata ayıklama modunda olmalıdır.


14

Hata ayıklama amacıyla basitçe özel bir Etkinlik oluşturabilirsiniz:

@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.

Bu çok faydalı oldu ama ihtiyacıma pek uymadı. Birden fazla paylaşılan tercih dosyasına izin veren bir düzenleme ekledim
Christopher Rucinski

Teşekkürler, düzenlemeleri nasıl kabul
edeceğimi

Başkaları tarafından reddedildi. Bunun kendi cevabı olması gerektiğini söylediler, bu yüzden yeni bir cevap olarak koydum. Aslında cevabınızı yeni düzenledim çünkü sadece cevabınızı gördüğümde yaptığım şeyi yapabildim.
Christopher Rucinski

Pekala :-) evet, bundan sonra başkaları tarafından gözden geçirilmesi
gerekti

10

Bu eski bir gönderi, ancak soru SharedPreferences.xmlAndroid Studio'yu kullanmakla ilgili olduğu için buraya grafik bir cevap koymam gerektiğini düşünüyorum . İşte başlıyor.

Araçlar -> Android Cihaz Monitörü'ne gidin. Cihaz monitörünü üzerine tıklayarak açın.

görüntü açıklamasını buraya girin

Ardından, cihaz monitöründe Dosya Gezgini sekmesini seçmeniz gerekir. Veri klasörünü bulun ve içinde başka bir veri klasörü bulun. Uygulama paketinizin adını taşıyan bir klasör içerecek ve istenen orada olacaktır SharedPreferences.xml.

görüntü açıklamasını buraya girin

SharedPreferences.xmlDosyayı seçin ve ardından yukarıdaki görüntünün sağ üst köşesinde işaretli düğmeyi kullanarak dosyayı çekin ve bilgisayarınıza kaydedin.

Bir cihaz emülatörü kullandım.


1
Gönderiniz sayesinde burada açıkladığınız şeyi yapmanın yeni yolu olan developer.android.com/studio/debug/device-file-explorer hakkında bilgi edindim.
malarres

Yardım edebileceğimi bilmek harika! Rica ederim.
Reaz Murshed

4

Tekli veya Çoklu Paylaşılan Tercih Dosyaları

Birden fazla Shared Preferencedosyanız varsa , hepsini göstermenin iyi bir yolu vardır, ancak 1 dosya adını da iletebilirsiniz.

  • loadSharedPrefs("pref_name");

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

İhtiyaçlarınıza uyacak şekilde aşağıdakilerden birini seçin ...

Tek Tip Değerler

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", "----------------------------------");

}

Çoklu Tip Değerleri

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", "------------------------------------");

}

}

Logcat Çıktısı

Benim Shared Preferencedeğerler hepsi String, ancak bu yukarıda 2 yöntemden birini kullanarak çıkışı ...

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

Başka bir basit yol, telefonunuzda bir kök gezgini uygulaması kullanmaktır.

Sonra gidin /data/data/package name/shared preferences folder/name of your preferences.xml, ES File explorer'ı kullanabilir ve rootcihazınızın adresine gidebilirsiniz , değil sd card.


1
Bu soruya bir cevap vermiyor. Bir yazarı eleştirmek veya açıklama istemek için, gönderisinin altına bir yorum bırakın - kendi gönderilerinize her zaman yorum yapabilirsiniz ve yeterli itibara sahip olduğunuzda herhangi bir gönderi hakkında yorum yapabilirsiniz . - Yorumdan
Luca Detomi

@LucaDetomi burada ne olduğumu biliyorsun
user5291072

Cevabınız çok kısa olarak işaretlendi. Yanıtlar, kullanıcıların "neden" nin iyi bir yanıt ve belki de en iyisi olabileceğini anlamasına olanak tanıyan ayrıntılar içermelidir. İlkeleri anlamanıza ve belki de diğer benzer sorunlara uyarlamanıza yardımcı olacak daha fazla ayrıntı eklemenizi öneririm
Luca Detomi

4

Paylaşılan preferenceandroid stüdyosunda açmak için

Sağ taraftaki cihaz gezgini dosyasını açın - veriler> veri>> paylaşılan_dosyalar

daha fazla açıklama için ekteki resmi bulun


ekli resim nerede
Mahmoud Mabrok


3

Aygıt Dosyası Gezgini'nde aşağıdaki yolu izleyin: -

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

2

Bazı verileri ekledikten sonra uygulamayı Emulator'da çalıştırın, sadece uygulamayı kapatın.

Şimdi DDMS veya Android Monitörü açın ve emülatörünüzü seçin, sağ tarafta Dosya Gezgini'ni görebilir, içindeki Veri klasörünü arayabilir ve oluşturduğunuz uygulama paketinizi arayabilir, paylaşılan tercih dosyasını açabilirsiniz. XML dosyasını görebilir, üzerine tıklayabilir ve sağ üst köşedeki cihaz düğmesinden bir dosya çek seçeneğine tıklayabilirsiniz.

XML dosyası istediğiniz yere kaydedilecektir, ardından notepad ++ gibi herhangi bir düzenleyiciyi kullanarak açabilir ve girdiğiniz verileri görüntüleyebilirsiniz.


In Android Studio 3.0 , ben buldum Cihaz Dosya Gezgini > veri> veri> (paket adı)> shared_prefs> (paket adı) _preferences.xml
Josselin

1

Bu komutları her zaman konsolda yararlı buluyorum:

  1. Doğru dosya adını bulun

    adb shell

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

  2. Dosyayı yerel dizine alın

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

  3. Senin $local_dir.


1

Bir öykünücü kullanıyorsanız sharedPrefs.xml, bu komutlarla dosyayı terminalde görebilirsiniz :

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

bundan sonra adb unrootsanal cihazı köklü tutmak istemiyorsanız kullanabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.