Android Studioを使用して共有設定ファイルを表示するにはどうすればよいですか?


100

共有設定を使用して、アプリの特定の値を保存しています。情報が実際に電話に保存されているファイルを確認したいのですが。Eclipseでこれを行う方法はたくさんありましたが、Android Studioでデバッグしています。私の電話は根付いています。これらのタイプのファイルを読み取るには、rootアクセス権が重要であると私は読みました。方法がない場合は、プログラムから情報にアクセスする方法を調べ、log catに出力します。うまくいけば、私はそれがはるかに簡単なので、私は電話で直接ファイルを見ることができます。ありがとう。


ESファイルエクスプローラーをインストールし、ルートブラウジングを有効にします。その後、電話で直接開くことができます。
CurlyPaul 2014年

3
adb pullを使用してファイルをデスクトップにフェッチしてみてください。 adb pull /data/data/<packagename>/shared_prefs/prefs.xml
Lal

2
または、ファイルエクスプローラーに移動し、ファイルツリーで、/ data / data / com.your-package / shared_prefsの下にあるアプリのデータフォルダーを見つけます。設定ファイルはXMLとして存在します。デバイスからコピーしてお楽しみください。ファイルエクスプローラービューの右上隅に2つのアイコンボタンがあります。1つはディスク用で、もう1つは携帯電話用です。これらのボタンを使用すると、電話/エミュレータとの間でファイルをそれぞれコピーできます。
Lal

1
なんらかの理由で、私の設定xmlファイルは<パッケージ名> _preferences.xmlと呼ばれます
JPM

回答:


94

Android StudioからAndroidデバイスモニターを起動し、ファイルエクスプローラーに移動して、「/ data / data / <パッケージの名前> / shared_prefs /」を参照します。XMLがそこにあります...検査のためにコピーすることもできます。

ルート権限を取得していないデバイスを使用している場合、Android Studioから直接それを行うことはできません。ただし、adb shellアプリケーションがデバッグバージョンである限り、ファイルにアクセスできます。

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

その後、adbを使用して/ sdcardディレクトリからファイルをプルできます。


デバイスモニターからこのフォルダーにアクセスできません。ルートは必要ですか?
MarianKlühspies、2015

2
2つ目の方法は、ルート権限を取得していないデバイスで機能します。ファイルをsdカードにコピーした後、adbを終了してadb pull "/ sdcard / your_preferences_file"を実行すると、現在のディレクトリに検査可能なxmlファイルが作成されます。
Bebop_

4
この方法でデバッグできれば、ルートなしでエミュレータからこの情報を実際に取得できます。物理デバイスを使用している場合は、rootが必要です。
Booger、2016年

3
AndroidStudioの右下にあるデバイスファイルエクスプローラーを探します。デバイスファイルシステムに簡単にアクセスできます
Maksim Turaev '21

2
デバイスファイルエクスプローラーを使用すると、ルートアクセスなしで共有設定にアクセスできます
Devansh Maurya

77

Android Studio 3.xの一部であるデバイスファイルエクスプローラーは、設定ファイル、キャッシュアイテム、またはデータベースを探索するのに非常に適しています。

  1. 共有設定/ data / data // shared_prefsディレクトリ

ここに画像の説明を入力してください

こんな感じ

ここに画像の説明を入力してください

デバイスファイルエクスプローラーを開くには:

[表示]> [ツールウィンドウ]> [デバイスファイルエクスプローラー]をクリックするか、ツールウィンドウバーの[デバイスファイルエクスプローラー]ボタンをクリックします。

ここに画像の説明を入力してください


13
デバイスファイルエクスプローラー(画面の右下)を開きます。
Apit John Ismail 2018

47

ステト

アプリケーションがデバッグモードのときに、http://facebook.github.io/stetho/を使用して共有設定にアクセスできます。ルートなし

特徴:

  1. sharedpreferencesの表示と編集
  2. sqLite dbの表示と編集
  3. ビュー階層を表示
  4. httpネットワーク要求を監視する
  5. デバイスの画面からストリームを表示する
  6. もっと....

ここに画像の説明を入力してください

基本的なセットアップ:

  1. build.gradleに追加 compile 'com.facebook.stetho:stetho:1.5.0'
  2. アプリケーションのonCreate()追加 Stetho.initializeWithDefaults(this);
  3. PCのChromeでchrome:// inspect /に移動します

更新:フリッパー

フリッパーは、facebookからの新しい選択肢です。それはより多くの機能を持っていますが、執筆は今のところMacでのみ利用可能で、設定が少し難しく、データベースのデバッグがありませんが、非常に拡張されたレイアウトインスペクターを導入しています

@Jeffrey提案を使用することもできます。

  • デバイスファイルエクスプローラーを開く(画面右下)
  • data / data / com.yourAppName / shared_prefsに移動します

これはエミュレータで動作しますか?私はそれを機能させることができないようです
EduardoMaia

@EduardoMaiaそれはすべきです。毎日エミュレータで使用しています。スクリーンショットを使用して質問を作成できますので、私がお手伝いします。
Maksim Turaev 2017

@EduardoMaia次のことを試すことができます。1. facebook stethoリポジトリを複製します。2.このプロジェクトを最新のAndroid Studioにインポートします(File-> Import-> "choose settings.gradle")3. gradleプラグインの更新に同意します。4. Android Emulator(私の場合はAPI 24)を起動します。5。stetho-sampleを起動します(緑色の矢印の横にある実行構成メニューから選択します)。6。PCで最新のChromeブラウザーを開きます。7。chrome:// inspectアドレスに移動します。リストからエミュレータを選択します。9。開いたウィンドウで[リソース]タブに移動します。10。左側のLocalStorageメニューで共有設定を見つけます。11。ブールフラグを使用してアプリケーションで再生
Maksim Turaev

昨日、共有設定を表示する必要なく問題を修正しました。しかし、私はこのステップバイステップを別の日に試します。ありがとう。
EduardoMaia 2017

14

デバッグ目的で特別なアクティビティを作成するだけです。

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

これは非常に便利でしたが、私のニーズには完全には合いませんでした。複数の共有設定ファイルを許可する編集を追加しました
Christopher Rucinski、2015

おかげで、私は編集を受け入れる方法を理解するのに苦労しています
cYrixmorten '20

それは他の人によって否定されました。それはそれ自身の答えであるべきだと彼らは言ったので、私はそれを新しい答えとして入れました。私は元々あなたの答えを編集しましたが、それは私があなたの答えを見たときに私がしたことしかできなかったからです。
Christopher Rucinski、

よし:-)ええ、私はそれを他人に見直さなければならなかった
cYrixmorten

13

Android Studio-> Device File Explorer(右下隅)-> data-> data-> {package.id}-> shared-prefs

注:モバイルデバイスをAndroid Studioに接続する必要があり、選択したアプリケーションはデバッグモードである必要があります


10

これは古い投稿ですが、質問はSharedPreferences.xmlAndroid Studioを使用して表示することに関するものなので、ここではグラフィカルな回答を入力する必要があります。だからここに行く。

[ツール]-> [Androidデバイスモニター]に移動します。デバイスモニターをクリックして開きます。

ここに画像の説明を入力してください

次に、デバイスモニターで[ファイルエクスプローラー]タブを選択する必要があります。データフォルダーを見つけ、その中の別のデータフォルダーを見つけます。これには、アプリケーションパッケージの名前を持つフォルダーが含まれ、必要なものが存在しますSharedPreferences.xml

ここに画像の説明を入力してください

SharedPreferences.xmlファイルを選択し、上の画像の右上隅にマークされているボタンを使用してファイルをコンピューターにプルして保存します。

デバイスエミュレータを使用しました。


1
あなたの投稿のおかげで、私がdeveloper.android.com/studio/debug/device-file-explorerについて学びました。これは、ここで説明しているのと同じことを行う新しい方法です。
マラー

私がお手伝いできることを知ってうれしいです!どういたしまして。
Reaz Murshed

4

単一または複数の共有設定ファイル

複数のShared Preferenceファイルがある場合、ここにそれらすべてを表示する良い方法ですが、1つのファイル名を渡すこともできます。

  • loadSharedPrefs("pref_name");

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

ニーズに合わせて次のいずれかを選択してください...

単一タイプの値

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

}

複数タイプの値

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出力

私のShared Preference値はすべてStringですが、これは上記の2つの方法のいずれかを使用した出力です...

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

もう1つの簡単な方法は、スマートフォンでルートエクスプローラーアプリを使用することです。

次に、に移動し/data/data/package name/shared preferences folder/name of your preferences.xmlESファイルエクスプローラーを使用してroot、ではなくデバイスのに移動しますsd card


1
これは質問に対する答えを提供しません。批評したり、著者に説明を要求したりするには、投稿の下にコメントを残します。自分の投稿にはいつでもコメントできます。十分な評判得られれ、どの投稿にもコメントできます。- レビューから
Luca Detomi

@LucaDetomiあなたは私がここから何をしているか知っています
user5291072

回答が短すぎると報告されました。回答には、ユーザーが「なぜ」それが良い回答で、おそらく最良の回答であるかを理解できる詳細を含める必要があります。原則を理解するのに役立つ詳細を追加し、それを他の同様の問題に適応させることをお
勧めし

4

preferenceAndroid Studioで共有を開くには

右側からデバイスエクスプローラーファイルを開きます-data> data>> shared_prefs

詳細については、添付画像を検索してください


3

ではAndroidのメーカー3

  • デバイスファイルエクスプローラー(画面の右下)を開きます。
  • data / data / com.yourAppName / shared_prefsに移動します。

またはAndroid Debug Databaseを使用する


2

データを挿入した後、エミュレータでアプリケーションを実行し、アプリケーションを閉じます。

次に、DDMSまたはAndroidモニターを開いてエミュレーターを選択します。右側にファイルエクスプローラーが表示され、その中のデータフォルダーを探し、作成したアプリケーションパッケージを探します。共有設定ファイルが開いていることがわかります。 XMLファイルを表示してクリックし、右上隅にあるデバイスボタンからファイルをプルすることができます。

XMLファイルは目的の場所に保存され、notepad ++などのエディターを使用してファイルを開き、入力したデータを表示できます。


Android Studioの3.0、私はそれを見つけデバイスファイルエクスプローラ >データ>データ>(パッケージ名)> shared_prefs>(パッケージ名)_preferences.xml
Josselinの

2

デバイスファイルエクスプローラーで、次のパスに従います。

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

1

私は常にこれらのコマンドがコンソールで役立つと感じています:

  1. 正しいファイル名を見つける

    adb shell

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

  2. ファイルをローカルディレクトリに取得する

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

  3. で確認してください$local_dir


1

エミュレータを使用している場合はsharedPrefs.xml、次のコマンドを使用してターミナルでファイルを確認できます。

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

その後adb unroot、仮想デバイスをルート化したままにしたくない場合に使用できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.