我搜索并搜索并搜索了这个!
所以我有一个应用程序小部件,它有一个配置活动,我可以在按下应用程序上的按钮时打开.场景是:
Had the app opened.
Closed the app with the home button.
Selected to add my widget
I have configured the widget.
Placed on my home screen
Then open the configuration activity again with the button on the widget.
Cancel the new config by pressing back will put me back into the app.
按下后我想回家.
基本上我要问的是.如何在自己的任务/堆栈中启动配置活动?
我已经调查了意图过滤器,但我只是不太确定,或者它可能与它所在的包有关,或者它可能是不可能的!
我想这可能与我用来启动配置活动的意图有关
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是:
PendingIntent API 1
“请注意,活动将在现有活动的上下文之外启动”
所以,是的,我现在就停止说话,因为我最终会进入圈内!
编辑
所以在清单中尝试了android:launchMode =“singleInstance”就像所说的那样.这有效但它会阻止’startActivityForResult’行为正常工作. (这是配置活动的全部原因)获取错误:
WARN/ActivityManager(59): Activity is launching as a new task, so cancelling activity result.
所以仍然没有找到解决方案.
解决方法:
好的排序:-)需要:
android:taskAffinity=""
在清单中,将任务关联设置为空字符串允许活动在其自己的堆栈中启动,因为它不与应用程序的其余部分“关联”.
UPDATE
我已将任务亲和力更改为:
机器人:taskAffinity = “com.my.package.alternative.task”
每次我发起活动时,它都会在“历史”中多次出现.所以它现在从它自己的堆栈开始,但是与同一活动的其他实例共享.
还需要将Flag Intent.FLAG_ACTIVITY_NO_HISTORY添加到您的意图:-)当您按住“主页”按钮时,这将阻止您在历史记录中多次获取应用程序.
UPDATE
我注意到FLAG_ACTIVITY_NO_HISTORY没有按照我的意愿行事,我已将其删除并添加:
android:excludeFromRecents="true"
也进入清单中的活动标签.活动现在表现得像我想要的那样:-)
从以下链接路径得到这个答案:
Tasks & Back Stack |
Managing Tasks |
Affiliation Tag