每天通过Android设置闹钟8时钟不起作用

时间:2020-03-09 03:36:13

标签: android alarmmanager

我尝试设置每天早上8点闹钟执行mainActivity,所以这是我的MainActivity:

   protected void onCreate(Bundle savedInstanceState){
      Intent Alarm = new Intent(MainActivity.this,LongRunningService.class);
      startService(Alarm);
   }

LongRunningService是Service:

   AlarmManager manager = (AlarmManager) getSystemService(ALARM_SERVICE);
   Calendar calendar = Calendar.getInstance();
   calendar.setTimeInMillis(System.currentTimeMillis());
   calendar.set(Calendar.HOUR_OF_DAY, 8);   
   calendar.set(Calendar.MINUTE, 00);   

   Intent i = new Intent(this,AlarmReceiver.class);
   intent.setAction("startAlarm");
   PendingIntent pi = PendingIntent.getBroadcast(this,0,i,0);
   manager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY, pi);

AlarmReceiver.java

   public void onReceive(Context context, Intent intent){
     if ("startAlarm".equals(intent.getAction()))
         Log.d(TAG, "onReceive! ");  //not working?
    }
   Log.d(TAG, "onReceive! ");  //it's working

2 个答案:

答案 0 :(得分:0)

来源:which permissions an android application need in order to use the Alarm Manager Service?

每10分钟唤醒一次CPU,直到手机关闭。

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

如果要设置在电话启动时重复发出警报:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED">

...

有关详细信息: Alarm Manager Example

根据android文档,您应该使用SET_ALARM权限

Documentation

允许应用程序广播意图以设置警报 用户。

答案 1 :(得分:0)

我知道会发生什么,

    Intent i = new Intent(this,AlarmReceiver.class);
    intent.setAction("startAlarm");  //wrong

    i.setAction("startAlarm");   //correct