我知道有关于此问题有几个问题,但没有一个问题有助于解决我的问题。
我希望能够点击电子邮件/文本/浏览器中的链接并打开我的应用。
我有 AndroidManifest.xml 代码:
<!-- Splash Activity -->
<activity
android:name=".ui.SplashActivity"
android:label="@string/app_name"
android:theme="@style/SplashTheme"
android:launchMode="singleTask">
<!-- Launcher intent filter -->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- Branch URI scheme -->
<intent-filter>
<data android:scheme="myscheme" android:host="open" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
</activity>
这似乎完全遵循文档here,但是,当我使用Chrome(或Android浏览器)浏览到myscheme://open
时,我的应用程序无法打开,而是获取Google搜索结果的 myscheme://开放
任何人都能看到我在这里失踪的那块拼图吗? 如何让我的应用通过URI打开?
小更新:
在阅读this后,我发现将Chrome导航到market://details?id=com.myapp
会不打开游戏商店。相反,它会返回Google搜索结果 - 与尝试直接启动我的应用时相同。这令人困惑。 我是否缺少允许深层链接的全局操作系统设置?
答案 0 :(得分:3)
Chrome无法通过手动输入的URI方案打开应用。事实上,手动输入的链接永远不会在Chrome中启动外部应用。这是设计 - 无论出于何种原因,Chrome团队认为用户在输入地址后应始终保留在浏览器中。
您可以通过将深层链接置于用户驱动器操作(例如标准<a>
标记)后在某种程度上解决此问题,但Chrome有自己的标准,称为Chrome Intents,您应该这样做改为使用。根据您使用的设备,标准浏览器也可能如此。
在其他应用中,有问题的应用是否可以将自定义URI方案识别为可点击的链接&#39;。为了获得最佳兼容性,您需要将其包含在具有重定向的常规http://
链接中。
如果您对深层链接的复杂性有深入的解释感兴趣,this post是一个很好的起点。如果您只是想让它在没有太多额外工作的情况下工作,Branch.io(完全披露:我在分支团队中)就可以解决这个问题作为免费服务。
答案 1 :(得分:1)
不要求任何应用关注myscheme://open
。
特别是:
当您在地址栏中输入myscheme://open
时,不要求任何Web浏览器尝试启动某些第三方应用,因为用户不太可能在现实世界中这样做。
电子邮件程序无需尝试为ACTION_VIEW
创建Intent
myscheme://open
。
不需要SMS客户端搜索字符串myscheme://open
的所有传入消息,意识到这是某种应用程序链接,并对其执行某些操作。
使用https
(或捏,http
)网址作为您的应用链接(来自the documentation that you linked to的http://www.example.com/gizmos
网址)总体上会有更好的运气。然后,SMS客户端可能会识别出这是一个URL并对其执行某些操作。而且,总的来说,您应该被带到您的应用程序或您的网页,这两者至少对用户有用。但是,当用户在地址栏中输入您的网址时,您的应用仍然不一定会打开,因为浏览器可能不希望在那里输入应用链接。
您可以通过publishing a digital asset links file增加https
应用链接工作的可能性,并以您想要的方式工作,然后将其绑定到您的清单中。
然而,总的来说,这仍然依赖于客户选择关注这些东西。有时它们会,因为Android使它相对容易。有时他们不会。欢迎使用Web浏览器查看您的URL,看到它是https
,说&#34;嘿,作为Web浏览器,我知道如何处理这个!&#34;,然后加载该网页,忽略您安装的应用程序。您和我可能会认为这是该浏览器中的错误;欢迎该浏览器的开发人员不同意。
我发现将Chrome导航到市场://详细信息?id = com.myapp无法打开游戏商店
这可以追溯到&#34;开发人员可以做他们想做的事情&#34;部分。如果您点击网页中指向该网址的链接,则Chrome可能会将您带到Play商店。但是,Chrome没有义务将地址栏视为处理网页中的链接。