我想用闹钟在某个时间运行一些代码。我已经成功地用清单中注册的广播接收器实现了一个警报,但是按照我的理解,这个方法对广播接收器使用一个单独的类。
我可以使用此方法启动另一个活动,但我不能使用它在我的主活动中运行方法?
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有接口的话)。我不知道是不是真的。)

10-08 17:08