我已经浏览了十几个关于这个问题的教程和论坛答案,但仍然无法组合出一些可以工作的代码。我会尽量保持问题简单明了:
如何使用Android API中的AlarmManager在指定时间启动一个Activity?任何解决此问题的方法都可以。
我最近尝试的代码如下所示。(省略了导入部分)我希望MyActivity在程序打开后3秒钟开始运行,但它没有。也没有任何错误信息。
public class AndroidTest2Activity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Context context = this;//.getApplicationContext();
AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); // CORRECT
Intent intent = new Intent(context, myReceiver.class); // CORRECT
PendingIntent pending = PendingIntent.getBroadcast( context, 0, intent, 0 ); // CORRECT
manager.set( AlarmManager.RTC, System.currentTimeMillis() + 3000, pending ); // CORRECT
setContentView(R.layout.main);
}
}
public class myReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Intent i=new Intent(context, myActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
public class myActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("", "Elusive success");
setContentView(R.layout.main);
}
}
希望能得到任何建议。
请注意:我已经在清单文件中添加了myReceiver。
PendingIntent.getActivity(...)
而不是PendingIntent.getBroadcast(...)
。 - ban-geoengineering