web-dev-qa-db-ja.com

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

アプリの特定の値を保存するために共有設定を使用しています。情報が実際に私の電話に保存されているファイルを見たいのですが。 Eclipseでこれを行う多くの方法を見つけましたが、Android St​​udioでデバッグしています。私の電話は根づいています。これらの種類のファイルを読むには、ルートアクセス権を持つことが重要だと読みました。方法がない場合は、プログラムを介して情報にアクセスする方法を調べ、それをlog catに出力します。しかし、願わくば、ファイルがはるかに単純なので、電話で直接表示できることを願っています。ありがとう。

77
JayUser

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

ルート化されていないデバイスがある場合、Android St​​udioから直接実行することはできません。ただし、アプリケーションがデバッグバージョンである限り、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ディレクトリからファイルをプルできます。

80
George Dima

ステト

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

特徴:

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

enter image description here

基本設定:

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

更新:フリッパー

Flipper は、facebookの新しい代替手段です。より多くの機能がありますが、現時点ではMacでしか使用できず、構成がやや難しく、データベースのデバッグ機能がありません。

@Jeffreyの提案も使用できます。

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

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

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

enter image description here

こんな感じ

enter image description here

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

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

enter image description here

34
phnmnn

デバッグ用の特別なアクティビティを作成するだけです:

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

Android Studio->デバイスファイルエクスプローラー(右下隅)->データ->データ-> {package.id}-> shared-prefs

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

8
Niranjan

これは古い投稿ですが、質問はAndroid St​​udioを使用してSharedPreferences.xmlを表示することに関するものなので、ここにグラフィカルな答えを入れます。だからここに行く。

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

enter image description here

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

enter image description here

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

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

7
Reaz Murshed

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

次に、/data/data/package name/shared preferences folder/name of your preferences.xmlに移動し、 ES File Explorer を使用して、sd cardではなく、デバイスのrootに移動します。

5
user5291072

Android Studio 3

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

または Android Debug Database を使用します

4
Jeffrey

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

複数の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﹕ ------------------------------------

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

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

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

2
Naren

私はいつもコンソールでこれらのコマンドが便利だと感じています:

  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
Rose

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

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

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

0
Rodrirokr

Android studioで共有preferenceを開くには

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

詳細については、添付の画像をご覧ください

0
Shwetank