我们知道有些标志可以使用java代码中的addFlags()方法添加到我们的意图中。有没有什么办法可以在清单文件中添加这些标志,而不是在java代码中编写它。 我需要为清单中的一个活动添加REORDER_TO_FRONT标志。
怎么做到这一点?
我们知道有些标志可以使用java代码中的addFlags()方法添加到我们的意图中。有没有什么办法可以在清单文件中添加这些标志,而不是在java代码中编写它。 我需要为清单中的一个活动添加REORDER_TO_FRONT标志。
怎么做到这一点?
在清单文件中,您无法添加Intent标志。您需要在Intent中设置您传递给startActivity的标志。这是一个示例:
Intent intent = new Intent(this, ActivityNameToLaunch.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
在清单文件中,您无法添加Intent标志。您需要在Intent中设置您传递给startActivity的标志。这是一个示例:
Intent intent = new Intent(this, ActivityNameToLaunch.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
要回答原始问题,因为这似乎是谷歌搜索中的第一个答案,所以可以完成,因为API级别3(2009年推出)添加 android:noHistory="true"
清单文件中的活动定义如下所述: http://developer.android.com/guide/topics/manifest/activity-element.html#nohist。
例:
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:noHistory="true">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.cataegory.LAUNCHER"/>
</intent-filter>
</activity>
我有类似的问题,想要设置标志
Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK
为了使活动始终处于领先地位。
在这种情况下,解决方案是设置属性
android:launchMode="singleInstance"
在清单中。
通常,Android清单中有许多属性用于活动,您可以使用这些属性来获得与旗帜类似的效果。
使用时可以轻松实现此目的 android:launchMode="singleTop"
在里面 <activity>
清单的节点,像这样:
<activity
android:name=".ui.activities.MainActivity"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
注意 android:launchMode="singleInstance"
正如@jörg-eisfeld给出的那样,不建议用于一般用途,因为它在官方文档中有说明: https://developer.android.com/guide/topics/manifest/activity-element.html (见 机器人:launchMode 部分)