Skip to content Skip to sidebar Skip to footer

Scheduled Alarm Manager Not Working Android

I am trying to start an alarm service that repeats every day at a particular time. I have gone through a lot of threads on stack overflow regarding this but no luck. I followed a f

Solution 1:

Here is what I did to get it working:

1) Added <uses-permission android:name="com.android.alarm.permission.SET_ALARM"/> to my manifest file.

2) Changed code in my Main activity to:

 AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.HOUR, 3);
        calendar.set(Calendar.MINUTE, 29);
        calendar.set(Calendar.AM_PM, Calendar.PM);

         Intent myIntent = new Intent(this, MyReceiver.class);
         pendingIntent = PendingIntent.getBroadcast(this, 0, myIntent,0);

         alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
                 AlarmManager.INTERVAL_DAY, pendingIntent);

Hope someone finds this helpful!

Solution 2:

Main Activity

publicclassMainActivityextendsAppCompatActivity {
 @OverrideprotectedvoidonCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Intentintent=newIntent(this, MyBroadcastReceiver.class);
        PendingIntentpendingIntent= PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
        AlarmManageralarmManager= (AlarmManager) getSystemService(ALARM_SERVICE);
        alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
                + (60 * 1000), pendingIntent); // 60 seconds after the current time
    }
}

Alarm Receiver

publicclassMyBroadcastReceiverextendsBroadcastReceiver {

    @OverridepublicvoidonReceive(Context context, Intent intent) {

        
        Log.e("Testing","ok");

    }

}

Manifests file

<manifestxmlns:android="http://schemas.android.com/apk/res/android"package="com.testapp"><uses-permissionandroid:name="android.permission.INTERNET" /><uses-permissionandroid:name="android.permission.WAKE_LOCK" /><uses-permissionandroid:name="android.permission.VIBRATE" /><uses-permissionandroid:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/><uses-permissionandroid:name="com.android.alarm.permission.SET_ALARM"/><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/AppTheme"><activityandroid:name=".MainActivity"><intent-filter><actionandroid:name="android.intent.action.MAIN" /><categoryandroid:name="android.intent.category.LAUNCHER" /></intent-filter></activity><receiverandroid:name=".MyBroadcastReceiver"android:enabled="true" /></application></manifest>

For background working add this in main activity(if application remove in to recent)

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            Intentintent=newIntent();
            StringpackageName= getPackageName();
            PowerManagerpm= (PowerManager) getSystemService(Context.POWER_SERVICE);
            if (!pm.isIgnoringBatteryOptimizations(packageName)) {
                intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
                intent.setData(Uri.parse("package:" + packageName));
                startActivity(intent);
            }
        }

Post a Comment for "Scheduled Alarm Manager Not Working Android"