Intent.action.VIEW不适用于某些设备

时间:2017-11-27 20:07:13

标签: android android-intent intentfilter

点击电子邮件,消息或浏览器应用程序中的URL链接时,我需要打开我的应用程序。所以,请参阅我的代码以获取此功能:

<activity
    android:name=".ui.main.MainActivity"
    android:configChanges="orientation"
    android:screenOrientation="portrait">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>

    <intent-filter>
        <data android:scheme="https" />
        <data android:scheme="https" android:host="www.mysite.org"/>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.BROWSABLE"/>
        <category android:name="android.intent.category.APP_EMAIL"/>
        <category android:name="android.intent.category.APP_MESSAGING"/>
        <category android:name="android.intent.category.APP_BROWSER"/>
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

此代码已足够,适用于某些移动设备,尤其是Android版本 5.0,6.0和7.0 的设备,但不适用于版本 7.1和8.0 。为什么会这样?这是一个许可问题吗?

2 个答案:

答案 0 :(得分:2)

例如:您的网址将类似于 https://example.com ,并且您在Android Manifest中有意图过滤器,如下所示:

<activity
    android:name="com.droid.MainActivity"
    android:label="@string/app_name" >

    <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.com"
            android:scheme="https" />
    </intent-filter>
</activity>

使用网址映射编辑器轻松地将URL意图过滤器添加到您的Android应用链接活动(Android Studio&gt;工具&gt; Android应用链接)。

答案 1 :(得分:1)

在阅读changes in Android O后,我得出结论,问题描述如下

  

URI不能包含空标签。以前,该平台支持一个   解决方法接受主机名中的空标签,这是非法的   使用URI。此解决方法是为了与旧的libcore兼容   版本。错误使用API​​的开发人员会看到ADB   消息:“URI example..com在主机名中有空标签。这是   格式错误,未来的Android版本将不被接受。“   Android 8.0删除了此解决方法;系统返回null for   格式错误的URI。

因此,请尝试将android:label="string resource"添加到您的intent-filter语法中,以便用户在替代菜单中看到它。