【问题标题】:How to fix broken intent-filter in Android 8如何修复 Android 8 中损坏的意图过滤器
【发布时间】:2025-12-09 23:25:01
【问题描述】:

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

我认为这是由于 Android 8 中对隐式 Intent 的支持被删除,但无法确定替代方法。

<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】:

    试试这个

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

    【讨论】:

    • 谢谢。遗憾的是,它并没有改变行为。