Intent.Action.View在某些设备上不起作用



当单击电子邮件,消息或浏览器应用程序中的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 。为什么会发生这种情况?这是一个权限问题吗?

ex:您的URL将是 https://example.com ,并且您在Android清单中具有以下内容:

<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> Tools> Tools> Android App Links),将URL意图过滤器添加到您的活动中。

在阅读Android o的变化后,我得出的结论是,该问题被描述如下

uris不能包含空标签。以前,该平台支持 解决宿主名称中的空标签的解决方法,这是非法的 使用URI。这种解决方法是与较旧的libcore兼容 发行。使用API错误的开发人员会看到ADB 消息:" uri example..com在主机名中都有空标签。这是 畸形,将来不会被接受。" Android 8.0卸下了这项解决方法;系统返回null 畸形的uris。

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

最新更新