Android AppWidget 配置 - 在新任务中启动

2024-02-17

我一直在寻找这个!

所以我有一个应用程序小部件,它有一个配置活动,我可以在按下应用程序上的按钮时打开该活动。场景是:

打开应用程序。

使用主页按钮关闭应用程序。

选择添加我的小部件

我已经配置了小部件。

放置在我的主屏幕上

然后使用小部件上的按钮再次打开配置活动。

按返回取消新配置将使我返回应用程序。

当我按下回击键时,我只想回家。

基本上我要问的是。如何在其自己的任务/堆栈中启动配置活动?

我已经研究过意图过滤器,但我不太确定,或者可能与它所在的包有关,或者也许这是不可能的!

我想这可能与我用来启动配置活动的意图有关

 Intent configIntent = new Intent(this, Configuration.class);
 configIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);      
 remoteView.setOnClickPendingIntent(R.id.config, PendingIntent.getActivity(this, 0, configIntent, PendingIntent.FLAG_UPDATE_CURRENT));

也许因为我以“this”作为上下文启动它,所以它将始终在我的应用程序堆栈中启动...... 但待处理的意图 api 是: 待处理意图 API1 http://developer.android.com/reference/android/app/PendingIntent.html#getActivity%28android.content.Context,int,android.content.Intent,int%29“请注意,该活动将在现有活动的上下文之外启动”

所以,是的,我现在不再说话了,因为我最终只是在原地打转!

EDIT

于是尝试过android:launchMode="singleInstance"在清单中如所述。这有效,但是它阻止了“startActivityForResult”行为的正常工作。 (这是配置活动的全部原因)收到错误:

警告/ActivityManager(59):活动正在作为新任务启动,因此取消活动结果。

所以还是没有找到解决办法。


好的,排序了:-) 需要:

android:taskAffinity=""

在清单中,将任务亲和性设置为空字符串允许活动在其自己的堆栈中启动,因为它与应用程序的其余部分不“附属”。

UPDATE

我已将任务亲和力更改为: android:taskAffinity="com.my.package.alternative.task" 每次我启动该活动时,它都会在“历史记录”中多次出现。因此,它现在在自己的堆栈中启动,但与同一活动的其他实例共享。

还需要添加Flag Intent.FLAG_ACTIVITY_NO_HISTORY按照您的意图:-) 当您“按住”主页按钮时,这会阻止您在历史记录中多次获取您的应用程序。

UPDATE

我注意到 FLAG_ACTIVITY_NO_HISTORY 没有执行我想要的操作,我已将其删除并添加:

android:excludeFromRecents="true"

也进入清单中的活动标记。该活动现在的行为就像我想要的:-)

从以下链接路径中得到了这个答案:任务和返回堆栈 http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html | 管理任务 http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html#ManagingTasks | 隶属关系标签 http://developer.android.com/guide/topics/manifest/activity-element.html#aff

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android AppWidget 配置 - 在新任务中启动 的相关文章

随机推荐