“首选项”按钮使用Intent和action.VIEW显示“使用浏览器打开”或“MyApp”对话框

时间:2016-03-14 15:37:51

标签: android android-intent

我有一个偏好布局,如下所示:

    <Preference
            android:title="@string/imagesPreferenceTitle"
            android:icon="@drawable/ic_action_images"
            android:key="@string/imagesPrefs">
        <intent
                android:action="android.intent.action.VIEW"
                android:data="content://ex.my-app.com/preferences/images">    
        </intent>

单击此按钮时,MainActivity应该处理此意图。这是AndroidManifest.xml声明:

    <activity
            android:name=".app.MainActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait"
            android:theme="@style/AppTheme.Activity"
            android:launchMode="singleTask"
            >
        <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"
                    android:host="ex.my-app.com"
                    android:pathPrefix="/preferences">
            </data>
            </data>
        </intent-filter>
    </activity>

在运行KitKat的Alcatel上进行测试,我弹出一个对话框,询问我是否应该使用浏览器或MyApp查看此内容。 在其他设备/操作系统版本上它是可以的 - MyApp总是处理它。

1 个答案:

答案 0 :(得分:1)

嗯,大概该设备有一个名为“浏览器”的东西,可以处理ACTION_VIEW content: Uri的{​​{1}}值,无论与Uri相关联的MIME类型是什么。

如果您尝试仅匹配该活动,请删除android:action,可能android:datause android:targetClass and android:targetPackage。 IOW,使用明确的Intent,而不是隐式的Intent