我想用闹钟在某个时间运行一些代码。我已经成功地用清单中注册的广播接收器实现了一个警报,但是按照我的理解,这个方法对广播接收器使用一个单独的类。
我可以使用此方法启动另一个活动,但我不能使用它在我的主活动中运行方法?
(how can I notify a running activity from a broadcast receiver?)
所以我一直在尝试注册我的广播接收器在我的主要活动,解释在上面的答案。
private BroadcastReceiver receiver = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "hello", Toast.LENGTH_SHORT).show();
uploadDB();
}
};
public void onResume() {
super.onResume();
IntentFilter filter = new IntentFilter();
filter.addAction(null);
this.registerReceiver(this.receiver, filter);
}
public void onPause() {
super.onPause();
this.unregisterReceiver(this.receiver);
}
然而,我一直无法让这个工作与警报管理器,我不确定如何将警报意图链接到广播接收器。有人能给我举一个在活动中动态注册Alarm Manager广播接收器的例子吗?或者解释我该怎么做?
最佳答案
这个怎么样?
Intent startIntent = new Intent("WhatEverYouWant");
PendingIntent startPIntent = PendingIntent.getBroadcast(context, 0, startIntent, 0);
AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarm.set(AlarmManager.RTC_WAKEUP, triggerTime, startPIntent);
然后在
Manifest.xml
文件中:<receiver android:name="com.package.YourOnReceiver">
<intent-filter>
<action android:name="WhatEverYouWant" />
</intent-filter>
</receiver>
据我所知,你还得在舱单上申报收信人。我不确定您是否可以将其设置为活动内部的私有实例。您可以在活动内部声明onreceive并调用它(如果broadcastReceiver有接口的话)。我不知道是不是真的。)