I use the ALARM_SERVICE with the following BroadcastReceiver, in oreder to start my OnReceiveActivity:
public class AlarmReciever extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent)
{
try {
Intent i = new Intent();
i.setClassName("com.test", "co.test.OnReceiveActivity");
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK );
i.addFlags(
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED +
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON +
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
);
context.startActivity(i);
} catch (Exception e) {
e.printStackTrace();
}
}
}
When I try it without any of the specified WindowManager.LayoutParams flags (while the device is awake and unlocked) - everything works as expected, meaning onReceive() is called, and starts OnReceiveActivity successfully. however, when the flags are present, it doesn't work, neither when the device is asleep and looked, nor when its awake and unlocked.
The following permission were specified at the manifest file:
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />