我们有一个可以通过两种方式启动活动的应用程序:
据我所知,这件事一直运作得很好。我们要么获得带有数据URI的Intent.ACTION_VIEW,要么得到一些字符串附加信息。
但是,我们有很少几个动作是Intent.ACTION_MAIN的实例,并且没有额外的数据。
意图的toString()如下(类名更改):
Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10400000 cmp=com.example.OurActivity }Intent.getExtras()返回空,Intent.getDataString()返回空。
在什么情况下会发生这种情况?为什么是Activity Intent.CATEGORY_LAUNCHER的类别?如何获得向用户显示正确内容所需的数据?
未为活动指定launchMode。IntentFilter中唯一的AndroidManifest.xml是深度链接(而不是启动程序类别)。
这个问题发生在Android 4-6上,在很多设备上。
编辑:忘记提到标志:
正如打印出来的那样,意图的标志是FLAG_ACTIVITY_NEW_TASK和FLAG_ACTIVITY_BROUGHT_TO_FRONT。我想这可能与此有关。
发布于 2016-09-06 20:13:07
我相信,我做到了:
这里有一些启动程序,比如Nova Launcher,它允许用户从开始使用应用程序的Activities的任何,而不是正常的流:

(例如,),您可以在桌面上添加一个快捷方式来启动带有帐户设置活动的Gmail客户端。
在这种情况下,活动是用空的Extras启动的,从技术上讲,它变成了一个启动程序的Activity。
发布于 2016-09-05 10:22:54
现在AndroidManifest.xml被构建系统操作了,您所包含的库通常也会将内容添加到清单中,我怀疑这里可能会发生这种情况。
尽管您声明清单中只有一个IntentFilter,但您是否实际检查了已安装的应用程序以查看其清单显示了什么(而不是依赖于您认为您在源代码中所放的内容)?
在Play Store中提供了各种应用程序,向您展示已安装应用程序的清单--包括AppDe探(我写了这篇文章)。
https://stackoverflow.com/questions/39328157
复制相似问题