如何在Android 8中修复损坏的意图过滤器

时间:2019-04-22 13:22:49

标签: android android-intent gmail android-8.0-oreo

自从将目标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对话框,其中显示“正在抓取附件...”,并且进度条处于运行状态-直到被取消,它才停止。

或者,如果我先下载文件,然后从下载管理器中打开它,那么它可以很好地打开我们的应用。

1 个答案:

答案 0 :(得分: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>