デバッグの目的で、アプリケーションの共有設定ファイルにアクセスする必要があります。私の知る限り、このファイルは/ data/...にあるはずですが、/ dataフォルダにアクセス権がないためアクセスできません。これは正常ですか?まだファイルにアクセスする方法はありますか? (たぶん、アプリケーション内からそれをレイドすることを除いて?)電話はルート化されておらず、私もそれをルート化したくない。ヒントをありがとう!
私は過去にこの問題に遭遇しました(ファイルシステムに対するroot権限を持っていませんが、アプリケーションデータフォルダーへのアクセスが必要です)。ルート権限を取得されたデバイスやADP1などの開発者デバイスがない場合は、エミュレータでアプリケーションを実行し、EclipseまたはDDMSの「ファイルエクスプローラ」からファイルにアクセスしてみてください。
編集#1:sharedPreferencesの getAll 関数を使用してファイルに保存してみてください。サンプルを一緒に投げられるかどうかを確認します。
編集#2:ネット上のランダムなサンプルから作成されたサンプルコードは、おそらくそれを行うための最良の方法ではありませんが、私はそれをテストし、機能しました。それはあなたのSDカードのルートにファイルを書き込みます。あなたが持っていることを確認してください
<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />
マニフェストに設定
private void saveSharedPreferences()
{
// create some junk data to populate the shared preferences
SharedPreferences prefs = getSharedPreferences("MyPrefs", MODE_PRIVATE);
SharedPreferences.Editor prefEdit = prefs.edit();
prefEdit.putBoolean("SomeBooleanValue_True", true);
prefEdit.putInt("SomeIntValue_100", 100);
prefEdit.putFloat("SomeFloatValue_1.11", 1.11f);
prefEdit.putString("SomeStringValue_Unicorns", "Unicorns");
prefEdit.commit();
// BEGIN EXAMPLE
File myPath = new File(Environment.getExternalStorageDirectory().toString());
File myFile = new File(myPath, "MySharedPreferences");
try
{
FileWriter fw = new FileWriter(myFile);
PrintWriter pw = new PrintWriter(fw);
Map<String,?> prefsMap = prefs.getAll();
for(Map.Entry<String,?> entry : prefsMap.entrySet())
{
pw.println(entry.getKey() + ": " + entry.getValue().toString());
}
pw.close();
fw.close();
}
catch (Exception e)
{
// what a terrible failure...
Log.wtf(getClass().getName(), e.toString());
}
}
ルート権限を取得していない電話では、残念ながら/ dataフォルダにアクセスするための良い方法はありません。次のように、MODE_WORLD_READABLE
を使用してファイルを作成してみてください。
SharedPreferences myPrefs = this.getSharedPreferences("prefs", MODE_WORLD_READABLE);
次に、adb pull
を使用して、ファイルをデスクトップにフェッチします。
adb pull /data/data/<packagename>/shared_prefs/prefs.xml
しかし、走行距離は異なる場合があります。
stethoを使用すると、SharedPreferencesデータに簡単にアクセスして変更できます。以下に提供されているリンクに従って、Androidプロジェクトに追加し、データを表示します。