Android报警管理器与广播接收器注册代码而不是清单

前端之家收集整理的这篇文章主要介绍了Android报警管理器与广播接收器注册代码而不是清单前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想用一个闹钟在一定时间运行一些代码.我已经成功地实施了在清单中注册的广播接收器的报警,但是我明白了这一点,这种方法使用一个单独的类作为广播接收机.

我可以使用这种方法来开始另一个活动,但是我不能用它在主要的活动中运行一个方法

(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);
}

然而,我无法让这个与报警管理器一​​起工作,我不确定如何将报警意图链接到广播接收器.任何人都可以指出在活动中动态注册报警管理器广播接收器的示例?还是解释一下我会怎么做?

解决方法

这个怎么样?
Intent startIntent = new Intent("WhatEverYouWant");
PendingIntent startPIntent = PendingIntent.getBroadcast(context,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有一个接口,我不知道是否这样做)

原文链接:https://www.f2er.com/android/309917.html

猜你在找的Android相关文章