在清单中注册的广播接收器在Android Oreo中未被调用
我注册了以下在清单中注册的广播接收器在Android Oreo中未被调用,android,broadcastreceiver,android-8.0-oreo,Android,Broadcastreceiver,Android 8.0 Oreo,我注册了以下接收器,它在Android Oreo中没有被调用,但在较低版本的设备上工作 <receiver android:name=".common.receiver.ConsultReceiver" android:exported="false"> <intent-filter> <action android:name="APP_STARTED" /> <actio
接收器
,它在Android Oreo中没有被调用,但在较低版本的设备上工作
<receiver
android:name=".common.receiver.ConsultReceiver"
android:exported="false">
<intent-filter>
<action android:name="APP_STARTED" />
<action android:name="APP_STARTED_FROM_ORGANIC" />
</intent-filter>
</receiver>
如有任何帮助,我们将不胜感激。一般来说
您的
未导出。这意味着三件事之一:
挂起内容
一起使用,例如用于通知
。如果是这样,请删除
,并使用明确的意图(新意图(这个,ConsultReceiver.class)
)作为创建指向此接收者的挂起内容的一部分
意图
并使用其他东西(LocalBroadcastManager
、事件总线、RxJava、LiveData
等)如果您的应用程序的目标API级别为26或更高,则您不能使用清单声明隐式广播(不专门针对您的应用程序的广播)的接收器,但少数不受该限制的隐式广播除外。在大多数情况下,您可以改用计划作业。在Android 8.0及以上版本中,使用以下代码检查何时安装或卸载某些应用程序
class MainActivity : AppCompatActivity() {
private val receiver = YourBroadcastReceiverClass()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val filter = IntentFilter();
filter.addAction(Intent.ACTION_PACKAGE_ADDED)
filter.addAction(Intent.ACTION_PACKAGE_REMOVED)
filter.addDataScheme("package")
registerReceiver(receiver, filter)
}
override fun onDestory() {
unregisterReceiver(receiver)
super.onDestroy()
}
}
将
意图
限制在带有的包中,但它不是隐式广播receiver@Ragini:接收者既不是隐式的,也不是显式的。意图是隐式的或显式的。明确的Intent
标识组件的Java类;隐式的意图
不起作用。@SantanuSur:我不知道FCM会改变任何关于显式意图
的工作方式的事情,如果你是这样问的话。在Android 8.x中启动活动没有任何变化@SantanuSur:正确。请注意,从推送消息启动活动可能不会让用户感到高兴,如果这会中断他们正在做的事情。考虑一下是否应该增加一个通知。@ JENIX:“对于隐式意图,对于ITENT.ActoNyLoad也是一样的吗?”——这不是用于广播的。“将在AndroidManifest.xml中进行静态注册仍然有效,例如.android.intent.action.BOOT_COMPLETED
恰好在白名单上,但大多数操作都不在白名单上。但这不是隐式广播接收器。这够了吗?”?