如何在Android 8中修复损坏的intent-filter

问题描述 投票:0回答:1

由于将目标SDK更新为26并在Android 8.1设备上进行测试,因此点击GMail中的电子邮件附件(我们的文件扩展名)不再会打开我们的应用活动。

我相信这是因为支持Android 8中的隐式意图被删除,但无法确定替代方法。

<activity
            android:name="com.abc.RestoreActivity"
            android:noHistory="true"
            android:label="@string/app_name"
            android:screenOrientation="portrait">

            <!-- Filter to open file with gmail version < 4.2 -->
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="application/fileextn" />
                <data android:pathPattern=".*\\.fileextn" />
                <data android:host="*" />
            </intent-filter>

            <!-- Filter to open file with gmail version 4.2 -->
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="application/octet-stream" />
                <data android:pathPattern=".*\\.fileextn" />
                <data android:host="*" />
            </intent-filter>
        </activity>

点击GMail中的电子邮件附件现在打开GMail对话框,显示“提取附件...”并且进度条正在运行 - 并且在取消之前它永远不会停止。

或者,如果我下载该文件,然后从下载管理器打开它...它会打开我们的应用程序。

android android-intent gmail android-8.0-oreo
1个回答
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:scheme="content"
        tools:ignore="AppLinkUrlError" />
    <data android:mimeType="application/octet-stream" />
    <data android:pathPattern=".*\\.fileextn" />
</intent-filter>
© www.soinside.com 2019 - 2024. All rights reserved.