5

アプリのリストと最近のアプリのリストから自分のアプリを削除したい。そこで、次のコードを使用してメイン/ランチャーアクティビティを無効にしようとしました。

ComponentName componentToDisable = new ComponentName(context, MainActivity.class);
context.getPackageManager().setComponentEnabledSetting(componentToDisable,
           PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);

これは仕事をします。しかし、今アプリを再インストールしようとすると、「アクティビティMainActivityクラスが存在しません」と表示されません。アプリをアンインストールすると、インストールが再開されます。この問題をどのように処理できますか?お手数をおかけしますが、よろしくお願いいたします。

4

1 に答える 1

5

再インストールする前に、アクティビティを有効にする必要があることがわかりました。これは、ブロードキャストレシーバーにpackage_add / removeイベントをリッスンさせ、onReceiveでアクティビティを再度有効にすることで実行できます。

public void onReceive(Context context, Intent intent) {
    Log.i("Receiver","got event");
    ComponentName componentToDisable = new ComponentName(context,BlockableComponentActivity.class);
    context.getPackageManager().setComponentEnabledSetting(componentToDisable,
            PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
}

受信者のマニフェストの抜粋:

<receiver android:name="PackageChangeReceiver">
<intent-filter>
    <action android:name="android.intent.action.PACKAGE_ADDED"/>
    <action android:name="android.intent.action.PACKAGE_REPLACED"/>
    <action android:name="android.intent.action.PACKAGE_REMOVED"/>
    <data android:scheme="package"/>
</intent-filter>

于 2012-05-02T12:54:21.920 に答える