Android:如何获取我的应用程序的所有首选项xml的列表并阅读它们?

Akh*_*ain 7 android readfile android-preferences sharedpreferences android-file

如何获取应用程序的所有应用程序首选项列表,

1.我保存共享偏好以这种方式用于将键值对保存在所需首选项xml中的活动

2.我知道,他们是在data/data/app_packagename/shared_prefs 首选项Xml的shared_pref文件夹


3.问题:但是如何在微调器中获取所有首选xml文件的列表 在此输入图像描述

并阅读每个偏好,我搜索了SO,但我没有找到任何关于此的帮助,如何读取我的应用程序目录中的所有首选项xml文件并访问首选项?

PS:我知道 SharedPreference.getAll();,一旦我拿到文件就足够了吗?

我写过比特(粗略代码),它试图运行时给出错误,这里是实现的方法

void getList()
{
  //will be invoked from onCreate to populate spinner,yes spinner is already binded
   PackageManager m = getPackageManager();
        String s = getPackageName();
        try {
            PackageInfo p = m.getPackageInfo(s, 0);
            s = p.applicationInfo.dataDir;
        } catch (NameNotFoundException e) {
            Log.w("yourtag", "Error Package name not found ", e);
        }
        Log.i("dir", s=s+"/shared_prefs");
     //is this write way, how to proceed from here
}
Run Code Online (Sandbox Code Playgroud)

nan*_*esh 25

试试这个

    File prefsdir = new File(getApplicationInfo().dataDir,"shared_prefs");

    if(prefsdir.exists() && prefsdir.isDirectory()){
        String[] list = prefsdir.list();
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, android.R.id.text1,list);
        Spinner sp = (Spinner) findViewById(R.id.spinner1);
        sp.setAdapter(adapter);

    }
Run Code Online (Sandbox Code Playgroud)

//获取所选项目

String item = (String) sp.getSelectedItem();
    //remove .xml from the file name
    String preffile = item.substring(0, item.length()-4);

    SharedPreferences sp2 = getSharedPreferences(preffile, MODE_PRIVATE);
    Map<String, ?> map = sp2.getAll();          

    for (Entry<String, ?> entry : map.entrySet()){
        System.out.println("key is "+ entry.getKey() + " and value is " + entry.getValue());
    }
Run Code Online (Sandbox Code Playgroud)

  • “shared_prefs”是否保证始终是包含共享首选项文件的目录的名称? (2认同)