AlarmManager在指定时间未显示吐司消息

时间:2020-06-28 21:55:24

标签: java android android-studio alarmmanager

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

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"/>

我们非常感谢您的帮助。我已经被这个问题困扰了几个小时。谢谢。

0 个答案:

没有答案