I want to wake up my whole android app daily at 9 am . I tried using alarm manager of android. But it calls pending intent. But in my case not pending intent , i want to wake full app. Following is my code . As i am beginner in android development any help is greatly appreciated .
public void SetAlarm() {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 09);
cal.set(Calendar.MINUTE, 00);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
AlarmManager alarmMgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
alarmMgr.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent);
}
And in MainActivity class :
public class MainActivity extends Activity {
String ua = "Mozilla/5.0 (Android; Tablet; rv:20.0) Gecko/20.0 Firefox/20.0";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.setBackgroundColor(0);
WebSettings webSettings = myWebView.getSettings();
myWebView.getSettings().setUserAgentString(ua);
webSettings.setJavaScriptEnabled(true);
myWebView.setWebChromeClient(new WebChromeClient());
webSettings.setDomStorageEnabled(true);
myWebView.setWebViewClient(new MyAppWebViewClient());
myWebView.loadUrl("file:///android_asset/www/index.html");
SetAlarm();
}
}
But at 9 am it is not waking my app up . Any mistakes ??
If you are opening an activity you should be using PendingIntent.getActivity
rather than PendingIntent.getBroadcast
Follow below instruction.
1. MainActivity.java
Intent myIntent = new Intent(getBaseContext(), MyReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), 0, myIntent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 10);
long interval = 60 * 1000; //
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(), interval, pendingIntent);
Step 2: Boradcast Receiver for start Your Activity.
MyReceiver.java
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent myIntent =new Intent(context, MainActivity.class);
myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(myIntent);
System.out.println("Receiver Call");
}
}
Step 3:
Put into your manifest.xml
<receiver android:name=".MyReceiver"/>
Change interval valuse as per your requirement if require 24 hours then interval=24*60*60*1000.
This is General solution for stackoverflow user pleas modify as per your requirement.
It will work perfect.Happy coding.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With