当前位置: 首页 > 知识库问答 >
问题:

深度链接意图不起作用

咸臻
2023-03-14

我遵循了https://developer.android.com/training/app-indexing/deep-linking.html上的insttructions,但当我想通过adb触发意图时:

adb shell am start
           -W -a android.intent.action.BROWSEABLE
           -d "http://example.com/gizmos" com.myapp.android

我只是得到

错误:activity未启动,无法解析意图{act=android.Intent.action.view dat=example:/gizmos flg=0x10000000 pkg=com.myapp.android}

<activity
        android:name=".activities.DeepLinkActivity"
        android:label="@string/title_activity_deep_link">
        <meta-data
            android:name="android.app.searchable"
            android:resource="@xml/searchable" />

        <intent-filter>
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />

            <data
                android:scheme="http"
                android:host="example.com"
                android:pathPrefix="/gizmos" />
        </intent-filter>
    </activity>

我犯了什么明显的错误吗?

共有1个答案

朱丰
2023-03-14

编辑:

Ok首先确保您的软件包可由ADB访问:

adb shell am start -n com.example.simon.test/.activities.MainActivity

然后,为了接受多个数据标记,您需要不同的意图过滤器(这是我的工作方式,不同于我在网上看到的所有其他示例)。例如:

<intent-filter>
    ...
    <data android:scheme="http"
          android:host="example.com"/>
</intent-filter>
<intent-filter>
    ...
    <data android:scheme="http"
          android:host="example.com"
          android:pathPrefix="/gizmos"/>
</intent-filter>

注意,在上面的示例中,pathPrefix以正斜杠开头!

我不知道为什么谷歌的文档会如此误导人,或者可能是针对不同版本的adb,但上面的更改对我来说是完美的。这有所帮助:来源

这就是我如何让Chrome浏览器将特定链接路由到我的应用程序

<activity
    android:name=".activities.DeepLinkActivity"
    android:label="@string/app_name">
    <!-- Accept chrome links -->
    <intent-filter>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <category android:name="android.intent.category.BROWSABLE"/>
        <data android:scheme="http"
              android:host="example.com"
            android:pathPrefix="/"/>
    </intent-filter>
    <!-- Accept adb data flag -->
    <intent-filter>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="http"
              android:host="example.com"/>
    </intent-filter>
</activity>

注意,第一个过滤器在Google Chrome上工作,而第二个过滤器在ADB上工作。

注意2如果链接被输入到浏览器的地址栏中,应用程序选择菜单将不会显示。必须是某个页面的链接。

在我看来,这里的一切都相当模糊,真的不是我所期望的那样。但在我的设备上就是这样工作的。希望这对你也有帮助。

 类似资料:
  • 我已经整合了分支机构。io SDK与我的android应用程序。我在仪表板中创建了带有自定义URI方案(drbond://)的深度链接URL。当从移动浏览器点击深层链接时,我会进入应用程序(如果已安装)。但在chrome浏览器中,情况并非如此。我试过使用Opera、Mozilla和其他默认浏览器,它们都可以正常工作。请帮助我了解在chrome中工作的深层链接。 仅供参考,我的活动意图过滤器,

  • 我们正在为我们的android应用程序实现延迟的深度链接,但是当从facebook广告下载时,无法获得安装推荐器。 采取的步骤, 1.从分支创建深度链接。io仪表板= 2.对于在android中的重定向(当应用程序未安装时),web url设置为所需的推荐值。例如https://play.google.com/store/apps/details?id=mypackagename 3.当用户直接点

  • 这是我的密码。这很简单,但当我点击按钮“button1”时,什么都没有发生。我做错了什么? 第二个-- 第三个-- 布局-- 新Logcat:11-29 12:15:39.552:D/gralloc_goldfish(613):检测到没有GPU仿真的模拟器。11-29 12:15:40.062:I/编舞(613):跳过51帧!应用程序可能在其主线程上做了太多工作。11-29 12:16:08.90

  • 深度链接在android中不起作用。我已经把清单代码贴在这里了。当我测试时,它会进入网站,而不会在我的应用程序中打开我的活动。谁能帮我修一下吗? 更新: adb shell am start-W-aandroid.intent.action.VIEW-d"http://www.clinicloud.com/xyz"com.clinicloud.app 使用adb进行测试会打开应用程序,但仅使用浏览

  • 众所周知,iOS深层链接已经改变了一点,称为通用链接,有了通用链接,我们需要在您的Xcode项目中启用“关联域”,并在那里添加受支持的域,还有一些变化,如在域服务器上托管苹果应用站点关联JSON。 这一点我非常理解,但我的问题是我必须支持多个社区,可能每个使用应用程序的企业都会有自己的社区,所以将所有社区(域)添加到“关联域”中不是一件好事,如果有新企业使用应用程序,然后我需要提供一个应用程序更新

  • 我试图在facebook messenger上共享音频文件。如下所述https://developers.facebook.com/docs/messenger/android#integration_with_intents在这里,它可以共享简单的文本而不是音频文件。当我尝试在messenger上发送音频时,应用程序崩溃。 这是意图共享代码字符串mimeType=“音频/aac”;