我的应用程序中有一个导出功能.这只是一个复制操作,因为我的所有设置都以共享首选项存储.
我只是将/data/data/package.name/shared_prefs/settings.xml中的xml文件复制到SD卡.它对我的HTC愿望很好.但是,它可能无法在三星设备上工作,我尝试复制文件时出现以下错误.
I/System.out( 3166): /data/data/package.name/shared_prefs/settings.xml (No such file or directory) in the directory.
任何人都知道如何修复它,还是有另一种简单的方法来存储共享偏好?
谢谢.
从来没有永远不会永远不会永远不会永远不会硬连接路径.
不幸的是,getSharedPreferenceDir()我无处可想.我能想到的最佳解决方案是:
new File(getFilesDir(), "../shared_prefs")
Run Code Online (Sandbox Code Playgroud)
这样,如果设备制造商选择更改分区名称,您将受到保护.
试试这个,看看它是否有帮助.
CommonsWare的建议是一个聪明的黑客,但不幸的是它不会起作用.
三星并不总是将shared_prefs目录放在与...相同的父目录中getFilesDir().
我建议测试是否存在(硬编码,包名称除外):
/dbdata/databases/<package_name>/shared_prefs/package.name_preferences.xml如果它存在则使用它,否则回到CommonsWare的建议new File(getFilesDir(), "../shared_prefs")或者只是/data/data/<package_name>/shared_prefs/package.name_preferences.xml.
如果用户在没有擦除的情况下从三星rom切换到自定义ROM,则此方法可能会出现问题,因为该/dbdata/databases文件可能未使用但仍然存在.
在一些三星设备上,例如运行froyo的Galaxy S系列,设置如下:
/data/data/<package_name>/(lib|files|databases)有时候那里也有一个shared_prefs,但这只是三星企图迷惑你!不要相信它!(我认为这可能是从2.1升级到2.2的遗留问题,但它可能是用户切换roms的遗留问题.我真的不知道,我只是将两者都包含在我的应用程序的错误报告界面中,有时会看到两个文件).
和:
/dbdata/databases/<package_name>/shared_prefs这是真正的shared_prefs目录.
但是在Froyo的Galaxy Tab上,这很奇怪.一般来说,你有:/data/data/<package_name>/(lib|shared_prefs|files|databases)
没有/dbdata/databases/<package_name>目录,但似乎系统应用程序确实有:
/dbdata/databases/<package_name>/yourdatabase.db
并且/dbdata/databases/<package_name>在您的应用程序卸载时不会删除额外的奖励.如果用户重新安装您的应用程序,请使用SharedPreferences祝您好运!
| 归档时间: |
|
| 查看次数: |
13558 次 |
| 最近记录: |