如何在源代码中禁用/启用android接收器?

时间:2015-04-20 07:31:30

标签: android receiver bootcompleted

我有一个关于Android Receiver的问题。 我可以更改系统应用程序。 当用户打开电源时,B是第一个应用程序。但问题是当用户选择FACTORY模式(如设置语言,谷歌ID ...)时,B App必须开始完成A App设置。这就是使用android:enabled =“false”和A App触发B app的原因。但不行。

我认为“android.intent.action.BOOT_COMPLETED”在启动后只发送一次,因此在更改启用接收器B应用程序后,它无效。这样对吗? 请你给我一些建议吗?

应用

PackageManager pm = getPackageManager();
ComponentName compName = new ComponentName("com.test.myapp", "com.test.myapp.receiver");
pm.setComponentEnabledSetting(compName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0);

B App AndoidManifest.xml

<receiver 
    android:name="com.test.myapp.receiver"
    android:enabled="false">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>

B App

public void onReceive(Context context, Intent intent) {
    if(Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())){
       Intent startMainActivityIntent = new Intent(context, new.class);
       startMainActivityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
       context.startActivity(startMainActivityIntent);
}

1 个答案:

答案 0 :(得分:0)

为什么不直接从应用A启动应用B?是的,启动完成仅触发一次。但是你可以在没有任何接收器的情况下启动应用程序B look here for example