首页 > 解决方案 > AlarmManager 在指定时间未显示 toast 消息

问题描述

我希望我的应用程序在每天晚上 9 点运行特定任务。我已经阅读了多个在 Android 应用程序中实现它的示例,并且我几乎尝试了每一个,但似乎没有任何效果。为了测试代码,我尝试在某个时间显示一条 toast 消息,但没有出现 toast 消息,即使在设定时间后几分钟也是如此,因为我在某些网站上读到警报时间可能不准确。请帮我弄清楚我的代码有什么问题。

MainActivity.java:

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
        Intent intent = new Intent(this, MyBroadcastReceiver.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 101, intent, PendingIntent.FLAG_UPDATE_CURRENT);
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(System.currentTimeMillis());
        calendar.set(Calendar.HOUR_OF_DAY, 21);
        calendar.set(Calendar.MINUTE, 00);
        if (alarmManager != null) {
            alarmManager.setExact(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntent);
        }
    }

    public class MyBroadcastReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            Toast.makeText(MainActivity.this, "Alarm...", Toast.LENGTH_SHORT).show();
        }
    }

AndroidManifest.xml:

    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>

非常感谢任何帮助。我已经被这个问题困扰了几个小时。谢谢你。

标签: javaandroidandroid-studioalarmmanager

解决方案


推荐阅读