Search code examples
javaandroidalarmmanagerandroid-pendingintent

Can getIntent() in OnCreate of Activity get the Extra data pass by PendingIntent from AlarmManager for self Activity restart?


the code to start alarmManager after 10 sec

Intent intent=new Intent(SelfUpdateByScanQrCodeEventActivity.getContext(), MainActivity.class);
            intent.putExtra("startInstallUpdateApk",true);
            PendingIntent pendingIntent = PendingIntent.getBroadcast(
                    SelfUpdateByScanQrCodeEventActivity.getContext().getApplicationContext(), createRestartAgentAlarmManagerRequestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT);
            AlarmManager alarmManager = (AlarmManager) SelfUpdateByScanQrCodeEventActivity.getContext().getSystemService(ALARM_SERVICE);
            Calendar cal = Calendar.getInstance();
            cal.add(Calendar.SECOND,delaySecTimeToRestartAgent);
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP,cal.getTimeInMillis(),pendingIntent);
                
            }else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
                alarmManager.setExact(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent);
               
            } else {
                alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent);
                
            }

the cod of MainActivity

public class MainActivity extends Activity {
@Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_preparation);
        Bundle extras = this.getIntent().getExtras();
        boolean startInstallUpdateApk = extras.getBoolean("startInstallUpdateApk");
}
}

Can I get the key,startInstallUpdateApk , onCreate after MainActivity called?


Solution

  • Simple answer to your question

    Can I get the key,"startInstallUpdateApk" , onCreate after MainActivity called?

    is "yes". However...

    Your code is calling PendingIntent.getBroadcast() when it should be calling PendingIntent.getActivity(). When the alarm triggers nothing will happen now because an Activity Intent and a broadcast Intent are 2 completely different things.