好的,所以我知道必须要做的不只是这个。我在这里阅读了许多答案,所有答案都说相同的话,但对我却不起作用。我希望能够使用带有来自浏览器的自定义URL方案的链接来打开Android应用。首先,我正在使用仿真器(实际上是Genymotion),所以我不知道这是否与它有任何关系。我看到的答案一直在说我所需要的与此类似:
<intent-filter>
<data android:scheme="myapp" android:host="hello"/>
<action android:name="ANDROID.INTENT.ACTION.VIEW"/>
<category android:name="ANDROID.INTENT.CATEGORY.BROWSABLE"/>
<category android:name="ANDROID.INTENT.CATEGORY.DEFAULT"/>
</intent-filter>
我把它放在一个新的空白活动上,而不是主要活动上。
如果我理解正确,则任何以开头的URLmyapp://hello
都将使用该意图过滤器打开活动。但是,无论尝试什么,我都会在浏览器中不断收到ERR_UNKNOWN_URL_SCHEME。这是库存的Android浏览器,因为我不能将Chrome放在Genymotion上(至少不能在免费版本上使用)。这需要Chrome吗?它只能在实际设备上完成吗?我做错什么了吗?
这里有几件事在起作用。
首先,正如Blackbelt所指出的那样,Android与大多数编程语言和开发环境一样,区分大小写。您需要根据这些操作和类别的文档将其更改为适当的情况:
<intent-filter>
<data android:scheme="myapp" android:host="hello"/>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.BROWSABLE"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
其次,并非所有的Web浏览器都处理myapp://
相同的方案。我不知道任何司法管辖区的图书法律都强迫开发人员遵守这些法律。您将遇到三种基本模式:
一些浏览器可能会很好地处理它们
在网页的链接中使用此类URL时,某些浏览器会处理这些URL,但如果在地址栏中键入URL,则不会
某些浏览器不会尝试查找活动来处理它们,而是一直失败
Google的首选替代方法是让您使用http
或https
方案,并由您控制主机和路径。一些浏览器将始终打开该网页,但其他浏览器将进行检查,看到有一个活动在宣传该URL的支持,并为用户提供了处理方式的选择。Android的“ M”版本将提供更多可以绕过选择器的钩子(“ App Links”)。另外,其他应用程序(例如,文本消息客户端,电子邮件客户端)通常将使http
链接可单击,从而允许用户选择打开您的应用程序,而很少有应用程序会myapp://hello
以相同的方式知道这一点。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句