java - 从您的应用程序中清除所有应用程序的数据(启动器)

标签 java android android-studio android-launcher

我创建了一个用作启动器的应用程序。在该应用程序中,我打开了各种其他应用程序。在该应用程序中,我想清除其他应用程序的所有数据(即登录详细信息、搜索历史记录),单击按钮即可删除。

PackageManager pm = getPackageManager();
            Method[] methods = pm.getClass().getDeclaredMethods();
            for (Method m:methods){
                if(m.getName().equals("freeStorage")){
                    try{
                        long desiredFreeStorage = Long.MAX_VALUE;
                        m.invoke(pm,desiredFreeStorage,null);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    break;
                }
            }

使用上面的代码,我可以删除缓存,但无法删除其他应用程序的数据。

请给我一个解决方案。 抱歉我的英语不好。

最佳答案

这是正常行为。您无法通过您的应用程序删除属于其他应用程序的数据。包含数据的文件是私有(private)的,只能由拥有它们的应用程序访问或由应用程序共享。

例如,大多数应用程序都使用 SharedPreference 作为私有(private)文件来保存数据以供以后使用。因此,如果允许其他应用程序删除该数据,那是毫无意义的。

关于java - 从您的应用程序中清除所有应用程序的数据(启动器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48657416/

相关文章:

java - 来自/usr/share/java 的 JAR 依赖解析

java - PL/SQL 返回 CLOB 和 JDBC 性能

java - rxjava2 中的运算符延迟

android - 限制平移和缩放

android - 如何在 android api 级别 12 模拟器上获取选项菜单?

android-studio - Android Studio Arctic Fox 与 JUnit4 不兼容?

java - 如果 onDestroy 之后有一个 Instruction,这个 Instruction 会被执行吗?

android - 在 Android Studio 中运行仪器测试的问题;未找到类 "android.test.runner.AndroidJUnitRunner"

java - 使用 JasperReports API 生成报告时获取空值

android - 在应用程序启动期间获取当前位置