我知道这个问题可能与其他一些类似问题重复出现。我已经审核了所有这些内容,但仍无法解决此问题。
我想在点击网页上的链接时启动我的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;启动应用程序的计划,但我在帖子中没有看到与此相关的任何内容。
你对这可能是什么有任何线索吗?
答案 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>