0

自分以外の Android アプリのアプリ キャッシュをクリアしようとしています。これを行うために、PackageManager クラスでリフレクションを使用しています。ただし、呼び出す前にメソッドを初期化すると、常に null になります。

    private  void initiateClearUserData() {
    // Invoke uninstall or clear user data based on sysPackage
    String thePackageName;
    PackageManager pm = speedy.this.getPackageManager();
    List<ApplicationInfo> installedApps = pm.getInstalledApplications(0);
    ApplicationInfo ai;// = installedApps.get(0);
    ActivityManager.RunningAppProcessInfo process;
    for(int x=0; x<4; x++){
        ai = installedApps.get(x);

ここに私の問題があります:

        thePackageName = ai.packageName.toString();// mAppEntry.info.packageName;
        Method deleteApplicationCacheFiles = null;
        mClearCacheObserver = new ClearCacheObserver();
    try {
        deleteApplicationCacheFiles = pm.getClass().getMethod(
             "deleteApplicationCacheFiles", String.class, PackageManager.class);
    } catch (SecurityException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (NoSuchMethodException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
 if(deleteApplicationCacheFiles!= null){
     try {
        deleteApplicationCacheFiles.invoke(thePackageName, mClearCacheObserver);
    } catch (IllegalArgumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (InvocationTargetException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    }else{
    Toast.makeText(speedy.this, "Hell naw",
            Toast.LENGTH_SHORT).show();
    }
    }
}

メソッド deleteApplicationCacheFiles が null であるため、トースト メッセージが表示されます。助言がありますか?

4

1 に答える 1

1

Android のセキュリティに関するドキュメントをご覧ください: http://developer.android.com/guide/topics/security/security.html

Android セキュリティ アーキテクチャの中心的な設計ポイントは、既定では、他のアプリケーション、オペレーティング システム、またはユーザーに悪影響を与える操作を実行する権限をアプリケーションが持たないことです。これには、ユーザーの個人データ (連絡先や電子メールなど) の読み取りまたは書き込み、別のアプリケーションのファイルの読み取りまたは書き込み、ネットワーク アクセスの実行、デバイスのスリープ状態の維持などが含まれます。

システムがこれを行うのをブロックするようです(リフレクションも介して)。

于 2012-04-21T21:57:51.520 に答える