我有以下代码来打开应用程序,一旦解锁,它会在前台显示我的应用程序。 这是代码:
if (AppStatus.isActivityVisible() == false) {
PowerManager pm = (PowerManager) mActivity
.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP
| PowerManager.FULL_WAKE_LOCK, "SipManager");
wl.acquire();
try {
Intent it = new Intent("intent.my.action");
it.setComponent(new ComponentName(mActivity.getPackageName(),
MainActivity.class.getName()));
it.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mActivity.getApplicationContext().startActivity(it);
} finally {
wl.release();
}
}
这适用于我,但它开始了一项新活动。我FLAG_ACTIVITY_NEW_TASK
的原因是因为当我使用FLAG_ACTIVITY_REORDER_TO_FRONT
之类的内容时会抛出此错误:
从Activity上下文外部调用startActivity()需要FLAG_ACTIVITY_NEW_TASK标志。这真的是你想要的吗?
如果活动在后台,或者在应用程序关闭时开始新活动,是否有办法将活动拉到前面?
我尝试添加setAction(Intent.ACTION_MAIN);
和addCategory(Intent.CATEGORY_LAUNCHER);
,但没有成功。
感谢您的帮助
答案 0 :(得分:1)
您还需要更多的东西:
在manifest.xml中,确保设置活动launchMode
<activity
android:name="com.att.attbusiness.PlanDetailsActivity"
android:launchMode="singleTop">
</activity>
然后,当你想从堆栈中获取活动或开始一个新活动时:
Intent i = new Intent(mContext, PlanDetailsActivity.class);
Bundle bundle = new Bundle();
i.putExtras(bundle);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
您可能还需要覆盖OnNewIntent()
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Bundle extras = getIntent().getExtras();
...
}