安卓:查看共享preferences文件?文件、preferences

2023-09-12 09:09:05 作者:奶兔叽

有关调试的目的,我需要访问我的应用程序的共享preferences文件。据我知道,我应该会在/数据文件/ ...但我无法通过访问/ data文件夹缺少权限。这正常吗?任何方式可以访问这些文件? (也许除了从应用程序中raeding吗?)这款手机是不是植根,我也不想根吧。 感谢您的任何提示!

For debugging purposes I need to access the shared preferences file of my application. As far as I know I should find this file in /data/... but I can't access the /data folder through to missing permissions. Is this normal? Any way to still access the file? (except maybe raeding it from inside the application?) The phone is not rooted and I also don't want to root it. Thanks for any hint!

推荐答案

我也遇到了这个问题,在过去的(不具有文件系统上的root权限,但需要访问应用程序数据文件夹)。如果你没有root权限的设备或开发设备,如ADP1那么你可以尝试在模拟器上运行你的应用程序,然后访问该文件从资源管理器,在Eclipse或DDMS。

I have ran into this issue in the past (not having root permission on the file system but needing access to the applications data folder). If you don't have a rooted device or a developer device such as the ADP1 then you can try running your application on the emulator and then accessing the files from the "File Explorer" in eclipse or DDMS.

编辑#1: 尝试使用 GETALL 功能共享preferences和保存了一个文件,我会看看我是否能拼凑一个样本。

EDIT #1: Try using the getAll function of sharedPreferences and saving that to a file, I will see if I can throw together a sample.

编辑#2: 例如code,从随机抽取周围的网创建,可能没有做到这一点的最好办法,但我测试了它和它的工作。它写入一个文件到SD卡的根目录。请确保您有

EDIT #2: Example Code, created from random samples around the net, probably not the best way to do it, but I tested it and it does work. It writes a file to the root of your sdcard. Make sure you have

<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());
    }
}

来源 之一的两个 三