为什么我们得到这些“无效”的意图?

我们有一个可以以两种方式启动的活动应用程序:

  • 从另一个活动 – 总是填写一些额外的数据
  • 从深层链接

据我所见,这总是工作得很好。 我们要么使用数据URI来获得Intent.ACTION_VIEW ,要么我们得到一些string额外的。

但是,我们有几个实例, Intent.ACTION_MAIN中没有额外的数据。

Intent的toString()如下所示(更改了类名称):

 Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10400000 cmp=com.example.OurActivity } 

Intent.getExtras()返回null, Intent.getDataString()返回null。

在哪种情况下会发生这种情况? 为什么是活动Intent.CATEGORY_LAUNCHER的类别? 我们怎样才能得到所需的数据,以显示用户正确的内容?

launchMode没有被指定给Activity。 AndroidManifest.xml唯一的IntentFilter用于深层链接(而不是启动器类别)。

这个问题发生在各种设备的Android 4-6上。

编辑:忘记提及国旗:

由于打印输出build议Intent的标志是FLAG_ACTIVITY_NEW_TASKFLAG_ACTIVITY_BROUGHT_TO_FRONT 。 我想这可能是相关的。

  • ConnectBot与意图
  • 理智的方式从ArrayList <Long>通过一个意图
  • 如何find使用Intent MediaStore.ACTION_IMAGE_CAPTURE拍摄的照片的方向?
  • 如何在Android手机中制作自己的自定义拨号器
  • 确认Twitter应用程序已在Android上login
  • 我怎样才能让我的应用程序出现在意向select器只为某些URL?
  • 如何将数据从BroadcastReceiver传递到正在启动的Activity?
  • 使用Intents或事件总线在相同的应用程序内进行通信
  • 我相信,我钉了它:

    有启动器,如Nova Launcher ,它允许用户开始任何应用程序的Activities ,而不是正常的stream程:

    在这里输入图像说明

    例如 ,您可以在桌面上添加快捷方式,以使用“帐户设置活动”启动Gmail客户端。

    在这种情况下,活动正在开始与空的Extras和技术上它成为一个启动的Activity

    现在AndroidManifest.xml被构build系统操纵了,经常会发生这样的情况:你包含的库也会把东西添加到清单中,我怀疑这可能是在这里发生的。

    尽pipe您声明清单中只有一个IntentFilter,但您是否确实检查了安装的应用程序以查看其清单所说的内容(而不是依赖于您认为放在源代码中的内容)?

    Play商店中提供了各种应用程序,向您展示已安装应用程序的清单,包括App Detective(我写的)。