通过架构强制打开Android应用程序

时间:2016-12-10 11:45:58

标签: android android-intent schema uri deep-linking

这是我的故事。我有一个Android应用程序,分享我的网站链接。在Android设备上我想检查用户是否有我的Android应用程序打开Android应用程序并显示该链接的相应内容,但如果没有我的应用程序在浏览器中打开该链接。我使用DeepLinkDispatch这个,但我有一个问题,当用户点击共享链接时,android要求客户选择打开此链接的应用程序(包括我的应用程序),但我想强制打开我的应用程序。 (如果安装在设备上)

2 个答案:

答案 0 :(得分:0)

您必须使用操作视图在清单文件中的活动意图过滤器中使用android:scheme,android:host和android:pathPrefix定义intent类别,默认和可浏览。 例如,如果网址为:“http://www.example.com/gizmos”。基于主机,方案和数据android中的路径前缀将找到可以处理url的意图。要使操作系统能够找到您的意图,您必须在应用程序中添加以下过滤器。

Functor

测试深层链接:您可以按如下方式测试shell的深层链接:

map :: (a -> b) -> List a -> List b
map = fmap

您可以在developer site

深入挖掘去链接

验证您的应用是否可以接收意图您可以使用包管理器检查您的应用是否可以处理具有特定网址的意图:

<activity
android:name="com.example.android.GizmosActivity"
android:label="@string/title_gizmos" >
<intent-filter android:label="@string/filter_title_viewgizmos">
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <!-- Accepts URIs that begin with "http://www.example.com/gizmos” -->
    <data android:scheme="http"
          android:host="www.example.com"
          android:pathPrefix="/gizmos" />
    <!-- note that the leading "/" is required for pathPrefix-->
    <!-- Accepts URIs that begin with "example://gizmos” -->
    <data android:scheme="example"
          android:host="gizmos" />
</intent-filter>

答案 1 :(得分:-1)

在Android 6.0之前,这是不可能的。

在Android 6.0及更高版本中,您可以使用automatic verification of app links请求您的应用在ACTION_VIEW Intents中使用某些网址时处理某些网址。

然而:

  • Web浏览器不必使用ACTION_VIEW作为URL。欢迎使用Web浏览器加载URL标识的网页。

  • 我不知道应用链接验证是否适用于Intent以外的ACTION_VIEW次操作。您的问题表明该网址可能会在ACTION_SEND中使用。

  • 用户可以进入“设置”并阻止您的应用处理网址。