0

この質問は、キーが不明な場合に SharedPreferences オブジェクトの内容を取得することに関するものではなく、名前が不明な場合に SharedPreferences 自体を取得できるかどうかに関するものです。

「ファイル名」が「something-a」、「something-b」、「something-c」の SharedPrefreferences コレクションがあるとします。次に、SharedPreferences オブジェクトの 3 つのセットが利用可能であると判断し、それらの名前の「something-」部分のみが既知の場合にそれらを取得できるかどうかを判断することは可能ですか?

ないと思いますが、あることを願っています。

この要件の背後にある理由については触れませんが、アプリをマシュマロのアクセス許可モデルに更新する必要があり、古いバージョンのアプリによって記述された設定ファイルを読み取ることができる必要があることを除いて、設定名は「何か」です。 -イムシ」。ユーザーがマシュマロに関連する権限を付与していない場合、アプリは imsi を認識しないため、アプリが完全な名前を知らないときに共有設定を読み取ることができるかどうかを調べようとしています。

4

2 に答える 2

0

このコレクションを使用してすべての設定を取得しSharedPreferences.getAll()、パターンに一致する文字列キーを反復処理できます。例えば:

SharedPreferences prefs = ctx.getSharedPreferences(PREFS_NAME, 0);
Map<String, ?> pairs = prefs.getAll();
for (Map.Entry<String, ?> entry : pairs.entrySet()) {
    // Check for your string pattern here...
}

この回答は、質問で説明されているパターンに一致するキーを持つ共有設定ファイルが 1 つあることを前提としています。そうではなく、パターンに一致する動的に名前が付けられた共有設定ファイルが複数ある場合は、より困難な問題になります。のファイルを繰り返し処理することで、ある程度の進歩を遂げることができますContext.getFilesDir()

于 2015-10-14T23:30:09.747 に答える
0

利用可能な設定のファイル名のリストを取得することはできないと思います。ただし、ファイル名がわかっている場合は、のインスタンスを取得し、メソッドをSharedPreferences使用getAllして、その設定のセットに存在するすべてのキーを取得できます。

ドキュメントは次のとおりです: https://developer.android.com/reference/android/content/SharedPreferences.html#getAll()

例:

    SharedPreferences sharedPreferences = context.getSharedPreferences(PREF_FILE_NAME, 0);
    Map<String, ?> map = sharedPreferences.getAll();
    for (Map.Entry<String, ?> e : map.entrySet()) {
        String key = e.getKey();
        // this is the key that is present
    }
于 2015-10-14T23:37:47.173 に答える