我想在每天上午9点唤醒我的整个Android应用程序。我尝试使用android的报警管理器。 但它呼吁待定意图。但在我的情况下,没有待定的意图,我想唤醒完整的应用程序。 以下是我的代码。由于我是Android开发的初学者,所以非常感谢任何帮助。
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);
}
在MainActivity类中:
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();
}
}
但是在上午9点它并没有唤醒我的应用程序。有什么错误吗?
答案 0 :(得分:1)
介绍(BroadcastReceiver
)再打开完整应用程序的步骤。
AlarmManager
- > broadcastReceiver
- >您的应用启动/启动页面
多数民众赞成。
答案 1 :(得分:1)
如果您要开展活动,则应使用PendingIntent.getActivity
而不是PendingIntent.getBroadcast
答案 2 :(得分:1)
您希望每天设置而不是alarmMgr.set
使用alarmMgr.setReapting
闹钟。
答案 3 :(得分:1)
Intent intent = new Intent(con, YourAppReciever.class);
PendingIntent sender = PendingIntent.getBroadcast(con, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
创建接收器并收听此广播。
public class YourAppReciever extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
context.startActivity(new Intent(context, MainActivity.class));
}
}
答案 4 :(得分:0)
按照以下说明操作。
<强> 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);
第2步: Boradcast Receiver开始您的活动。
<强> 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");
}
}
第3步:
加入manifest.xml
<receiver android:name=".MyReceiver"/>
根据您的要求更改间隔值如果需要24小时,则间隔= 24 * 60 * 60 * 1000。
这是根据您的要求修改stackoverflow用户请求的一般解决方案。
它会很完美。快乐编码。