从网站打开Android应用程序无效

时间:2016-02-08 10:56:51

标签: java android html android-intent web

我想在我的简单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图标:

enter image description here

当我按下该图标时 - 我的应用程序会打开。但仍然不是我想要实现的目标。

知道我上面的代码为什么不起作用?我尝试了很多我在互联网上发现的intent-filter声明变体,但似乎没什么用。我安装了安装了Android 6的nexus 5设备。

3 个答案:

答案 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>