如何在APPWIDGET_CONFIGURE意图中添加标志?

时间:2013-04-10 05:26:14

标签: android android-intent android-widget android-activity intentfilter

我在APPWIDGET_CONFIGURE注册了一项活动:

    <activity android:name="com.tahanot.activities.NearbyStops">
        <intent-filter>
            <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
        </intent-filter>
    </activity>

但是,此活动的行为与预期不符。它在现有堆栈内打开,当我按下Back按钮时,它会转到其他活动而不是关闭任务。理想情况下,我希望APPWIDGET_CONFIGURE包含FLAG_ACTIVITY_NEW_TASKFLAG_ACTIVITY_MULTIPLE_TASK

是否可以在AndroidManifest.xml中指定标​​记,如果没有,您会建议使用哪种解决方法?

3 个答案:

答案 0 :(得分:1)

考虑将activityMode属性指定给activity元素。

<activity android:launchMode="singleTask" android:name="com.tahanot.activities.NearbyStops">
    <intent-filter>
        <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
    </intent-filter>
</activity>

根据official docs

  

FLAG_ACTIVITY_NEW_TASK

     

在新任务中启动活动。如果任务已在运行   你现在开始的活动,那个任务被带到了   前景及其最后一个状态恢复,活动接收到   onNewIntent()中的新意图。

     

这会产生与“singleTask” launchMode值相同的行为,   在上一节中讨论过。

因为你提到你想要FLAG_ACTIVITY_NEW_TASK行为所以singleTask launchMode可能适合你。

答案 1 :(得分:0)

开始活动时使用此java代码

Intent intent = new Intent(this,
        activityname.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

在这里你可以像这样添加你的意图对象的旗帜。

您还可以添加多个标记。

答案 2 :(得分:0)

这是我使用的清单声明,遵循appsroxcom对android的想法:launchMode:

<activity
    android:name="com.tahanot.activities.NearbyStops"
    android:configChanges="orientation"
    android:label="@string/title_activity_stops_nearby"
    android:launchMode="singleTop"
    android:taskAffinity="com.tahanot.tasks.widgetConfiguration" > 
    <!-- android:launchMode makes sure the Back button doesn't navigate to another NearbyStops activity. 
         android:taskAffinity makes sure the Back button doesn't navigate to some other activity. -->
    <intent-filter>
        <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
    </intent-filter>
</activity>