android - 警报管理器运行 Activity

标签 android android-activity alarmmanager

我有以下代码来设置闹钟

  @Override
        public void onCreate(Bundle savedInstance) {
            super.onCreate(savedInstance);

            int [] progressVals = getPackets();

            displayList(progressVals, values);

            setAlarm();
        }

private void setAlarm(){
    DatabaseHandler db = new DatabaseHandler(this);
    Queue top = db.getTopQueue();

    if(top != null){
        String p = top.getPacket();
        double timestamp = top.getTimestamp();
        int qNum = top.getExNum();

        Intent intent = new Intent("com.dejalearn.algorithm.AlarmReciever.class");
        PendingIntent pendingIntent = PendingIntent.getBroadcast(DisplayAllActivity.this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

        AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);

        Calendar instance = Calendar.getInstance();
        instance.add(Calendar.SECOND, 3);

        alarmManager.set(AlarmManager.RTC_WAKEUP, instance.getTimeInMillis(), pendingIntent);
        Toast.makeText(DisplayAllActivity.this, "Start Alarm", Toast.LENGTH_LONG).show();
        Log.i("DISPLAY ALL", "ALARM SET UP");
    }
}

从此,我尝试从实际运行的 Activity 运行的 Activity 称为 AlarmReciever,它扩展了广播接收器,但是我的警报接收器中的 toast 永远不会运行。

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;

    public class AlarmReciever extends BroadcastReceiver{

        @Override
        public void onReceive(Context context, Intent intent) {
            Log.i("FOUND", "THE MESSAGE");
            try{
                Toast.makeText(context, "made it", Toast.LENGTH_LONG).show();
            }catch(Exception e){
                Toast.makeText(context, "error", Toast.LENGTH_LONG).show();
                e.printStackTrace();
            }

        }

    }

为什么我的新 toast 从来没有运行过。我看过多个示例,但似乎没有任何效果。我不确定出了什么问题。

最佳答案

将您的 Intent 更改为有效的 Intent :

Intent intent = new Intent(DisplayAllActivity.this, AlarmReciever.class);

确保将接收器添加到 AndroidManifest.xml 中,如下所示:

<receiver name=".AlarmReciever" />

关于android - 警报管理器运行 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18777958/

相关文章:

android - 向报警管理器广播接收器发送数据

android - API 19 及更高版本中 AlarmManager setRepeating 的替代方案?

java - 使用 GSON 创建复杂的 JSON 模型

java - Android 绑定(bind)服务每次都返回 false

android - 构造函数未定义错误

Android SetNewPassword Intent 返回 RESULT_FIRST_USER

java - 从其他 Activity 中打开 Activity

android - 如何将整数传递给类的实例并使用它来调用另一个类的方法?

java - Android Activity : how to init variable with constructor? 我需要 putExtra 吗?

android - 取消预定的安卓通知