-1

I am try to set Alarm 8am in every day to execute mainActivity , so this is my MainActivity:

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

LongRunningService is 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
leona lin
  • 25
  • 5

2 Answers2

0

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

It wakes CPU every 10 minutes until the phone turns off.

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

If you want set alarm repeating at phone boot time:

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

...

For more details : Alarm Manager Example

according to android documentation , you should use SET_ALARM permission

Documentation

Allows an application to broadcast an Intent to set an alarm for the user.

Angus
  • 3,680
  • 1
  • 12
  • 27
0

I know what happen ,

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

    i.setAction("startAlarm");   //correct
leona lin
  • 25
  • 5