Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 杀死另一个应用程序并清除它';s数据_Android - Fatal编程技术网

Android 杀死另一个应用程序并清除它';s数据

Android 杀死另一个应用程序并清除它';s数据,android,Android,我正在开发一个工具,它可以杀死选定的应用程序并清除所有数据。一种模拟 我只有可用的软件包名称。在我看来,这似乎是不可能的。Android不允许您杀死(或清除)另一个应用程序的数据 指定一个方法killBackgroundProcess(String),但是内核不会终止它,除非它是您自己的包名。我不确定它是否有效,但您可以使用您拥有的包名获取应用程序的进程ID,然后使用进程ID作为参数调用killProcess()方法 EDIT1:-ok。。忘记上面写的。。我已经尝试了下面的代码,它似乎适合我 A

我正在开发一个工具,它可以杀死选定的应用程序并清除所有数据。一种模拟
我只有可用的软件包名称。

在我看来,这似乎是不可能的。Android不允许您杀死(或清除)另一个应用程序的数据


指定一个方法killBackgroundProcess(String),但是内核不会终止它,除非它是您自己的包名。

我不确定它是否有效,但您可以使用您拥有的包名获取应用程序的进程ID,然后使用进程ID作为参数调用
killProcess()
方法

EDIT1:-ok。。忘记上面写的。。我已经尝试了下面的代码,它似乎适合我

ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
activityManager.killBackgroundProcesses(appProcessName);
您需要在应用程序清单中指定
android.permission.KILL\u BACKGROUND\u进程
permission,您就是黄金

EDIT2:-以下代码清除应用程序数据。但有一个问题是,它无法清除其他应用程序的数据,因为每个安卓应用程序都运行在一个沙箱中,这会屏蔽它们的数据,使其无法从其范围之外访问

public void clearApplicationData(String packageName) {
        File cache = getCacheDir();
        File appDir1 = new File(cache.getParent()).getParentFile();
        File appDir = new File(appDir1.getAbsolutePath() + "/" + packageName);
        if (appDir.exists()) {
            String[] children = appDir.list();
            for (String s : children) {
                if (!s.equals("lib")) {
                    deleteDir(new File(appDir, s));
                    Toast.makeText(this, "App Data Deleted", Toast.LENGTH_LONG)
                            .show();
                }
            }
        }
    }

public static boolean deleteDir(File dir) {
        if (dir != null && dir.isDirectory()) {
            String[] children = dir.list();
            for (int i = 0; i < children.length; i++) {
                boolean success = deleteDir(new File(dir, children[i]));
                if (!success) {
                    return false;
                }
            }
        }
        return dir.delete();
    }
public void clearApplicationData(字符串packageName){
文件缓存=getCacheDir();
File appDir1=新文件(cache.getParent()).getParentFile();
File appDir=新文件(appDir1.getAbsolutePath()+“/”+packageName);
if(appDir.exists()){
String[]children=appDir.list();
for(字符串s:子项){
如果(!s.equals(“lib”)){
deleteDir(新文件(appDir,s));
Toast.makeText(此“应用程序数据已删除”,Toast.LENGTH\u LONG)
.show();
}
}
}
}
公共静态布尔deleteDir(文件目录){
if(dir!=null&&dir.isDirectory()){
String[]children=dir.list();
for(int i=0;i
可以通过使用
Process
类并通过它执行
chmod
命令来更改文件的权限,但是您需要再次作为该包的shell运行,该包要求将应用程序设置为可在
Android Manifest
文件中调试


所以,要清除其他应用程序的数据,即使不是不可能,底线也是很难的。

您是想通过编程还是想使用一些应用程序?这是我所相信的,但是,还有一些任务管理器应用程序……是的,我必须同意RomioxGood。。关于清晰数据部分。。将在明天早上更新答案(现在印度已经很晚了)我尝试运行shell命令,但是如果没有root访问权限,这是不可能的。嗯,我得试试:)谢谢!