Sha*_*ane 12 android broadcastreceiver alarmmanager
我想在某个时间使用警报运行一些代码.我已经成功实现了一个警报,广播接收器在清单中注册,但我理解它的方式,这种方法使用一个单独的类广播接收器.
我可以使用此方法启动另一个活动,但我无法使用它在我的主要活动中运行方法?
所以我一直试图在我的主要活动中注册我的广播接收器,如上面的答案所述.
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);
}
Run Code Online (Sandbox Code Playgroud)
但是我无法让它与闹钟管理器一起工作,我不确定如何将警报意图链接到广播接收器.有人能指出我在活动中动态注册警报管理器广播接收器的例子吗?或解释我会怎么做?
use*_*321 19
这个怎么样?
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);
Run Code Online (Sandbox Code Playgroud)
然后在你的Manifest.xml文件中:
<receiver android:name="com.package.YourOnReceiver">
<intent-filter>
<action android:name="WhatEverYouWant" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
所以据我所知你还需要在Manifest中声明接收器.我不确定您是否可以将其设置为活动内的私有实例.你可以在你的活动中声明一个onReceive并调用它(如果BroadcastReceiver有一个接口.我不知道它是否有.)
| 归档时间: |
|
| 查看次数: |
25216 次 |
| 最近记录: |