android - 广播 onReceive 方法不会被调用
问题描述
由于评论,代码更新为更具体的信息。
清单.xml
<receiver
android:name="com.x.x.x.MyReceiver"
android:enabled="true"
android:exported="false">
<intent-filter>
<action android:name="com.x.x.x.NOTIFICATION_INTENT_ACTION.TEST" />
</intent-filter>
</receiver>
MyReceiver.java
internal class MyReceiver: BroadcastReceiver() {
companion object {
const val NOT_ID = ".."
const val NOT = ".."
const val NOTIFICATION_INTENT_ACTION = "com.x.x.x.NOTIFICATION_INTENT_ACTION.TEST"
}
override fun onReceive(context: Context, intent: Intent) {
// does not get called
}
}
创建Intent.java
Intent intent = new Intent(this, MyReceiver.class);
mPendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
mAlarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
if (mAlarmManager != null) {
mAlarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 60000L, mPendingIntent);
}
问题:类内部的 onReceive 方法NotRec
没有被调用。我试图将 Manifest 更改为,<receiver android:name="FULL_PATH.receiver.NotRec" />
但它没有改变任何东西。有任何想法吗?
解决方案
消除
android:exported="false"
从<receiver>
清单中的声明。
如果您不“导出”您的接收器,AlarmManager
则无法触发它。当您将清单中的组件标记为“未导出”时,这意味着它是“私有的”,其他应用程序(包括类似的系统应用程序AlarmManager
)无法启动或触发该组件。
推荐阅读
- visual-studio - 带有 GLAD 的 VS 2017 社区中的链接器错误
- amazon-web-services - CloudWatch 自定义日志未正确呈现
- python - 无法使用 Selinium Webdriver 点击 Span Link
- html - 如何使包含 div 不影响悬停在父 div 上
- r - 在数据表列表上应用一个函数,该函数需要引用上一行
- python - 如何从张量中获取随机子张量?
- python - 直接保存时,Matplotlib 未正确渲染曲线下的渐变
- git - 如何查看 git merge 在提交之前做了什么?
- r - 使用组第一行的值为每个组创建新行
- node.js - 使用 node.js 构建一个安静的 api 后端 - 问题如何以及从哪里开始