【发布时间】:2019-01-02 15:45:44
【问题描述】:
我正在开发device owner app(通过 QR 码安装)在一种情况下,我需要切换用户,这涉及清除与应用程序相关的所有数据,如果应用程序不是“设备所有者”应用程序”我会使用 android
((ActivityManager) m_context.getSystemService(Context.ACTIVITY_SERVICE)).clearApplicationUserData();
但由于它是“设备所有者应用”,我收到以下错误:
java.lang.SecurityException:无法清除受保护包的数据
是否有任何其他 api / 方法来清除设备所有者应用程序的数据?
更新:
感谢@CommonsWare 我给所有数据库打电话context.deleteDatabase("db_name") 并像这样清除了所有SharedPreferences
SharedPreferences.Editor editor = preferences.edit();
editor.clear();
return editor.commit();
这就够了……
【问题讨论】:
-
为什么不直接删除你的文件呢?它是您的应用程序,您知道它正在创建什么文件以及在哪里创建。
-
我正在尝试清除我存储在应用程序中的所有 SharedPreferences 但没有清除它们:| (尝试了所有可用/我知道的命令)
-
如果
clear()不适合您,我猜,请提交错误报告。您可以遍历SharedPreferences中的所有值并单独删除它们。在这两种情况下,您都需要commit()或apply()Editor才能使更改生效。 -
@CommonsWare ,感谢您的 cmets,最终我所做的就是我所做的(删除您的文件 + clear & commit ,并且它有效(长话短说为什么我第一次尝试它没有用) ,请将其作为答案发布,以便我接受,谢谢!
标签: android device-owner