Android Nougat迁移至Device Protected Storage的SharedPreferences路径查询
当你通过createDeviceProtectedStorageContext()将SharedPreferences迁移到设备加密存储后,文件的新路径为:/data/user_de/0/<你的应用包名>/shared_prefs/<你的SharedPreferences文件名>.xml
关键细节说明:
user_de是Android系统中设备加密存储区域的专属标识,区别于凭证加密存储的user目录。0代表当前设备的主用户ID,如果设备存在多用户场景,这个数字会对应不同的用户ID。
如何验证路径:
你可以通过代码动态获取准确路径,避免硬编码带来的适配问题:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { Context deviceContext = context.createDeviceProtectedStorageContext(); // 从设备加密存储的根目录拼接SharedPreferences文件路径 File prefsDir = new File(deviceContext.getFilesDir().getParentFile(), "shared_prefs"); File prefsFile = new File(prefsDir, PREFERENCES_NAME + ".xml"); Log.d(TAG, "迁移后的SharedPreferences路径:" + prefsFile.getAbsolutePath()); }
备份/恢复的注意事项:
- 该路径属于应用私有存储区域,需要Root权限才能直接通过文件管理器复制。如果没有Root权限,建议通过应用自身代码读取SharedPreferences的键值对,再写入外部存储实现备份;恢复时则读取外部存储的备份数据,通过
deviceContext对应的SharedPreferences写入。 - 恢复操作必须使用
createDeviceProtectedStorageContext()获取的Context,否则数据会被写入凭证加密存储路径,无法在DirectBoot模式下访问。
内容的提问来源于stack exchange,提问作者Flyview
相关产品推荐
相关产品推荐

