用于https方案无效的Android Intent过滤器

时间:2016-01-18 19:54:13

标签: android android-intent intentfilter

我知道这个问题可能与其他一些类似问题重复出现。我已经审核了所有这些内容,但仍无法解决此问题。

我想在点击网页上的链接时启动我的Android应用。当我使用自定义Scheme时,它可以正常工作:

<!-- In the deployed webpage: -->
<a href="test://test.com">Launch application </a>

<!-- The Intent filter: -->
<intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.BROWSABLE" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:scheme="test" android:host="test.com" />
</intent-filter>

但是当将计划更改为&#34; https&#34;:

<!-- In the deployed webpage: -->
<a href="https://test.com">Launch application </a>

<!-- The Intent filter: -->
<intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.BROWSABLE" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:scheme="https" android:host="test.com"/>
</intent-filter>

浏览器尝试打开(不存在)页面并忽略intent过滤器。 它不适用于http,https,ftp等。

我在Android 6.0上运行应用程序,编译:最低11,目标23。

似乎有些机制不允许我使用&#34;保留&#34;启动应用程序的计划,但我在帖子中没有看到与此相关的任何内容。

你对这可能是什么有任何线索吗?

2 个答案:

答案 0 :(得分:1)

从Android Marshmallow开始,您可以使用新的android:autoVerify标记来请求Android验证某个域是否属于您,并且您希望在应用中打开链接,而不是浏览器。< / p>

  

&#34; Android 6.0(API级别23)及更高版本允许应用指定   本身作为给定类型链接的默认处理程序&#34;

请参阅:https://developer.android.com/training/app-links/index.html#intent-handler

答案 1 :(得分:0)

尝试加入两个data标记,然后根据第一个intent-filter删除第一个android.intent.category.DEFAULT类别,但必须在第二个"the activity should be an option for the default action to perform on a piece of data"

<activity android:name=".MainActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.BROWSABLE" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="https" android:host="test.com" />
    </intent-filter>
</activity>