Android taskAffinity指定活动的问题

时间:2011-06-20 19:09:29

标签: android android-manifest taskaffinity

我在这里处理一个奇怪的问题。

基本上,我有一个应用程序(由另一个开发人员制作),其活动将taskAffinity指定为“”,其launchMode指定为“singleTask”。

当手机收到通知时,我会在我的应用程序中使用FLAG_ACTIVITY_NEW_TASK标志启动活动。

如果任务存在,我希望我的活动为该其他应用程序设置taskAffinity。

当我dumpsys activity时,我发现其他开发人员应用程序TaskRecord是:

aj.streetPhone.app/.ViewActivity

但是,在我的活动清单中,我指定aj.streetphone.app它似乎没有将我的活动添加到该应用程序任务中。我尝试了另一个包名,它似乎正在工作。问题可能与任务名称包含活动的事实有关,而不仅仅是包名称(默认值)。

我基本上遇到了使用'/'的问题,因为清单不接受它。

android:taskAffinity="aj.streetPhone.app/.ViewActivity" <--- does not work!

我试过逃避'/',由unicode添加,一切。请帮忙!

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

任务关联(以及权限,进程和共享用户ID,以及 动作等等)不受应用程序包名称的限制。他们是一个 单个字符串,很多必须是全局唯一的。只是添加“.foo”不会 使它独特,因为另一个应用程序的包名称可以是 您自己的更短或更长的版本,并提出相同的名称。  因此,对于亲缘关系和进程,您可以在名称中使用“:”前缀 将其附加到您自己的包名称并创建一个有保证的名称 独特的包装。

因此,您必须为您的任务关联使用唯一字符串。

答案 1 :(得分:0)

/确实无效。

除非它以某种方式缩写(快速查看dumpsys activity我自己的应用似乎表明它不是你的活动的全名是{{ 1}}。但是,如果要将包名称添加到aj.streetPhone.app.ViewActivity,则只需使用冒号,例如taskAffinity。也就是说,:myAffinity并不意味着活动的名称!

据我了解,taskAffinity旨在控制哪个&#34;任务&#34;一项活动属于。虽然我无法评论为什么您尝试将活动粘贴到其他应用的任务上,但您可能希望清除亲和力以指示活动可以在任何任务;虽然我还没有尝试过,但我想这会导致后退按钮返回到之前用户所处的任何活动,而不是回到你应用中最后活动的任何活动(你的任务)。

更多信息(仅供参考,是chemalarrea引用的地方,但没有给予信任): https://groups.google.com/forum/?fromgroups=#!topic/android-developers/wKwnV1k_96A

文档: https://developer.android.com/guide/topics/manifest/activity-element.html#aff