我想在我的简单Android应用中实现此类功能:当用户在网络浏览器中访问某个链接(www.example.org)时 - 如果已安装,Android操作系统应该会打开我的Android应用程序
我尝试使用像这样的intent-filters:
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="example.org"
android:pathPattern="/.*"
android:scheme="http" />
<data
android:host="www.example.org"
android:pathPattern="/.*"
android:scheme="http"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
但它在Google Chrome移动浏览器中根本不起作用。在firefox中,当我访问该链接时,我在搜索栏的右侧显示了这样的Android图标:
当我按下该图标时 - 我的应用程序会打开。但仍然不是我想要实现的目标。
知道我上面的代码为什么不起作用?我尝试了很多我在互联网上发现的intent-filter声明变体,但似乎没什么用。我安装了安装了Android 6的nexus 5设备。
答案 0 :(得分:1)
我找到了解决问题的方法。整个互联网充满了旧例子。
自Chrome版本25以来,谷歌在应用深度链接功能方面略有变化。更多信息:https://developer.chrome.com/multidevice/android/intents
所以我的工作代码如下所示:
Android方面的意图过滤器:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="launcher"
android:path="/"
android:scheme="test" />
</intent-filter>
网页html:
<a href="intent://launcher/#Intent;scheme=test;package=com.example.gediminas.myapplication;end">Launch app</a>
答案 1 :(得分:0)
尝试这样,删除路径模式:
<intent-filter>
<data android:scheme="http" android:host="twitter.com"/>
<action android:name="android.intent.action.VIEW" />
</intent-filter>
更多信息: Launch custom android application from android browser
答案 2 :(得分:0)
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="example.org"
android:scheme="http" />
</intent-filter>