5

選択したアプリケーションを強制終了し、そのデータをすべて消去するツールに取り組んでいます。これをシミュレートする ようなもので、パッケージ名しかありません。

4

2 に答える 2

2

それが機能するかどうかはわかりませんが、できることは、アプリのプロセス ID をパッケージ名で取得し、プロセス ID をkillProcess()パラメーターとしてメソッドを呼び出すことです。

EDIT1:-わかりました..上記の内容を忘れてください..次のコードを試してみましたが、うまくいくようです。

ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
activityManager.killBackgroundProcesses(appProcessName);

アプリケーション マニフェストでアクセス許可を指定する必要がありandroid.permission.KILL_BACKGROUND_PROCESSES、あなたはゴールデンです。

EDIT2:-次のコードは、アプリ データを消去します。しかし、他のアプリのデータをクリアできないという問題があります。これは、すべての Android アプリがサンドボックスで実行され、そのデータがその範囲外からアクセスされないように保護されているためです。

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();
    }

Processクラスを使用してコマンドを実行することでファイルのアクセス許可を変更できる場合がchmodありますが、その場合も、アプリケーションをファイルでデバッグ可能として設定する必要があるそのパッケージのシェルとして実行する必要がありAndroid-Manifestます。

つまり、他のアプリのデータを消去することは、不可能ではないにしても難しいことです。

于 2013-11-07T08:34:42.203 に答える
0

私の意見では、これは非常に不可能に思えます。Android では、別のアプリケーションを強制終了 (またはデータを消去) することはできません。

このリンクはメソッド killBackgroundProcess( String ) を指定していますが、それが独自のパッケージ名でない限り、カーネルはそれを強制終了しません。

于 2013-11-07T08:15:27.760 に答える