猿问

从Activity外部调用startActivity()?

我正在使用AlarmManager触发广播信号的意图。以下是我的代码:


AlarmManager mgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

Intent i = new Intent(this, Wakeup.class);

try

{

    PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, 0);

    Long elapsed +=  // sleep time;

    mgr.set(AlarmManager.RTC_WAKEUP, elapsed, pi);

}

catch(Exception r)

{

    Log.v(TAG, "RunTimeException: " + r);

}

我正在从调用此代码Activity,所以我不知道如何得到以下错误...


ERROR/AndroidRuntime(7557): java.lang.RuntimeException: Unable to start receiver com.wcc.Wakeup: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?


回首忆惘然
浏览 790回答 3
3回答

隔江千里

如果您的Android版本低于Android-6,则需要添加此行,否则它将在Android-6以上运行。...Intent i = new Intent(this, Wakeup.class);i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);...

慕姐8265434

对于同一活动的多个实例,请使用以下代码段,注意:此代码段是我在之外使用的Activity。确保您的AndroidManifest文件不包含android:launchMode="singleTop|singleInstance"。如果需要,可以将其更改为android:launchMode="standard"。Intent i = new Intent().setClass(mActivity.getApplication(), TestUserProfileScreenActivity.class);  i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);// Launch the new activity and add the additional flags to the intentmActivity.getApplication().startActivity(i);这对我来说很好。希望这可以为某人节省时间。如果有人找到更好的方法,请与我们分享。
随时随地看视频慕课网APP

相关分类

Android
我要回答