setComponentEnabledSettingを使用すると、アンインストール時に Android OS が再起動します。他の誰かがこれに出くわしましたか?
エラー/AndroidRuntime(1143): *システム プロセスでの致命的な例外: android.server.ServerThread java.lang.RuntimeException: ブロードキャスト インテントの受信エラー { act=android.intent.action.PACKAGE_CHANGED dat=package:com.example.foo flg= 0x8000010 (エキストラあり) } com.android.server.NotificationManagerService$2@41b00228
原因: java.lang.IllegalArgumentException: 不明なパッケージ: com.android.server.pm.Settings.getApplicationEnabledSettingLPr(Settings.java:2443) の com.example.foo
コードは次のとおりです。
public class FooActivity extends Activity {
@Override
protected void onResume() {
super.onResume();
enableReceiver();
}
@Override
protected void onPause() {
super.onPause();
disableReceiver();
}
private void enableReceiver() {
setReceiverState(PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
}
private void disableReceiver() {
setReceiverState(PackageManager.COMPONENT_ENABLED_STATE_DISABLED);
}
private void setReceiverState(int receiverState) {
getPackageManager().setComponentEnabledSetting(new ComponentName(this, FooBroadcastReceiver.class), receiverState, PackageManager.DONT_KILL_APP);
}
public static class FooBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
}
}
}
マニフェストの受信者:
<receiver android:name="com.example.foo.FooActivity$FooBroadcastReceiver"/>
ありがとう!