0

キャッシュは AIDL 経由で消去できますが、forcestop 機能はどうですか?

試しましたが、失敗しました。誰かが前にこれをしましたか?

私のパッケージに aidl ファイルを追加します。

IActivityManager.aidl
package android.app; 
oneway interface IActivityManager { 
     void forceStopPackage(String packageName);
}

IActivityManager を実装していますが、そのオブジェクトを取得できません:

import android.app.IActivityManager;
class ActivityManagerProxy implements IActivityManager
{

    public ActivityManagerProxy(IBinder remote)
    {
        mRemote = remote;
    }

    public IBinder asBinder()
    {
        return mRemote;
    }

    public void forceStopPackage(String packageName) throws RemoteException
    {
        Parcel data = Parcel.obtain();
        Parcel reply = Parcel.obtain();
        data.writeInterfaceToken(descriptor);
        data.writeString(packageName);
        mRemote.transact(FORCE_STOP_PACKAGE_TRANSACTION, data, reply, 0);
        reply.readException();
        data.recycle();
        reply.recycle();
    }

    private IBinder mRemote;
}
4

1 に答える 1

1

独自のプロセスで実行されるActivityManagerServiceがIPC呼び出し元の許可をチェックしたため、これは不可能です。FORCE_STOP_PACKAGESこのメソッドを呼び出す権限を保持している必要があります。

于 2012-12-13T17:44:56.183 に答える