为了避免共享操作受到当前运行的主应用程序的干扰,我提到
android:taskAffinity
我也尽最大努力确保只有一个
com.xxx.MyActivity
在任务中
com.xxx.share
通过使用
-
android:launchMode="singleTask"
-
android:clearTaskOnLaunch="true"
AndroidManifest.xml文件
<activity android:name="com.xxx.MyActivity"
android:taskAffinity="com.xxx.share"
android:launchMode="singleTask"
android:clearTaskOnLaunch="true"
android:theme="@style/Theme.Transparent"
android:windowSoftInputMode="stateAlwaysHidden" >
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
</intent-filter>
</activity>
第一次创建MyActivity时(
onCreate
被调用),我可以验证它是否在名为“的任务中”com.xxx.share公司".
但是,如果MyActivity被“重用”(
onNewIntent
是的
“任务名称内的长度”com.xxx.share公司".
我使用以下方法来获取当前任务名称-
Is it possible to get the name taskAffinity which the Activity belongs to during runtime?
p/s公司
如果
Activity
<activity android:name="com.xxx.widget.MyActivity"
android:taskAffinity="com.xxx.launcher"
public static int getClearEverythingFlagsForLauncher() {
return Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK;
}
final android.content.Intent openIntent = new Intent(context, MyActivity.class);
openIntent.addFlags(getClearEverythingFlagsForLauncher());
但是现在,通过共享意图来启动活动已经超出了我的控制范围。我不能再供应了
getClearEverythingFlagsForLauncher()
.