场景如下:
AndroidManifest.xml 使用 android:launchMode="singleTask"
定义单个 Activity 。 (这意味着在整个应用程序生命周期中,堆栈中应该只有一个 Activity ,对吧?)
在 Activity.onCreate()
期间,广播接收器以编程方式创建并监听传入的 SMS。即使在 Activity.onPause()
设计 之后,接收器仍保持 Activity 状态。
当用户完成应用程序时,他按下设备主页按钮,调用 Activity.onPause()
,应用程序消失。然后设备会显示 Android 主屏幕。
接收到 SMS 后,广播接收器接收 SMS 并尝试通过以下方式显示 Activity:
Intent it = new Intent(context, Akami.class);
it.setAction(Intent.ACTION_MAIN);
it.addCategory(Intent.CATEGORY_LAUNCHER);
it.setComponent(new ComponentName(context.getPackageName(), "MyActivity"));
it.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(it);
但是,该 Activity 不会向用户显示。
- a) 为什么?
- b) 将 Activty 带到前台的可能方法有哪些?
最佳答案
在 MyMainActivity
定义 (AndroidManifest.xml) 中:
<intent-filter>
<action android:name="intent.my.action" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
以编程方式将应用程序带到前台:
Intent it = new Intent("intent.my.action");
it.setComponent(new ComponentName(context.getPackageName(), MyMainActivity.class.getName()));
it.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.getApplicationContext().startActivity(it);
注意:context.startActivity(it)
将在 context
对象与想要启动的 Activity 相同时不起作用。
关于android - 将 Android 应用程序从后台带到前台的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12838230/