我是新来的,所以我希望我的问题得到正确的解答。提前谢谢!
我的问题是:
BroadcastReceiver
以AlarmManager
方式通过同一BroadcastReceiver
内的方法调用{/ 1}}:
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, Receiver.class);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);
am.setRepeating(AlarmManager.RTC_WAKEUP,
System.currentTimeMillis(), 5000, pi);
onRecieve工作,直到我把MainActivity
的方法放在那里。当调用代码时,每次AlarmManager
尝试启动onReceive时都会收到此错误:
12-22 21:56:01.020: W/BroadcastQueue(2192): Unable to launch app com.example/10000 for broadcast Intent { flg=0x14 cmp=com.example/.Receiver (has extras) }: process is bad
如果我在收到BroadcastReceiver
的{{1}}上创建方法,我可以在BroadcastReceiver的方法中调用MainActivity
中的方法:
MainActivity
但我无法理解如何在BroadcastReceiver的onReceive中调用它们。
onRecieve上的 public void SetHandler(Context context, MainActivity main) {
MainActivity mainactivity;
this.mainactivity = main;
mainactivity.method();
}
不起作用,我不知道是不是因为它mainactivity.method()
没有附加到MainActivity
,或者是因为我'做错了。
如果问题是由于活动与BroadcastReceiver的关联,它是如何完成的? 如果这不是问题,它会是什么?
答案 0 :(得分:1)
将您的BroadcastReceiver
注册到活动,然后创建一个IntentService
将其放入AlarmManager
并在handleIntent
服务的功能中向所提供的IntentFilter
发送广播并且您将能够在onReceive
中调用活动方法。
答案 1 :(得分:0)
我遇到此process is bad
错误,我必须保持导出的FCM服务。
添加:
android:exported="true"
或完全删除 exported =“false”。
我的服务现在看起来像这样:
<service
android:name=".service.MyFirebaseMessagingService"
android:exported="true"
>
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service
android:name=".service.MyFirebaseInstanceIdService"
android:exported="true"
>
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
希望这对你也有帮助。