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

Posted

技术标签:

【中文标题】如何在源代码中禁用/启用 android 接收器?【英文标题】:How to disable/enable android receiver in source code? 【发布时间】:2015-04-20 07:31:29 【问题描述】:

我有一个关于 android Receiver 的问题。 我可以更改系统应用程序。 B是第一个应用程序,当用户打开电源时。但问题是当用户选择FACTORY Mode(如设置语言,google id...)时,必须启动B App完成A App设置。这就是为什么使用 android:enabled="false" 和 A App trigger 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 应用

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);

【问题讨论】:

您可以使用默认方法registerReceiver() & deregisterReceiver。欲了解更多信息,请参阅:***.com/questions/4134203/… 【参考方案1】:

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

【讨论】:

以上是关于如何在源代码中禁用/启用 android 接收器?的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用或启用onMessageReceived的firebase推送通知?

Android:以编程方式启用/禁用应用小部件

如何在 android 复选框检查更改上接收事件?

如何在 Android 中启用/禁用日志级别?

如何在 Android 中以编程方式启用禁用 GPS? [复制]

实现细粒度启用/禁用推送通知