首页 > 解决方案 > 使用 Intent.ACTION_PICK 启动活动时,我的 Android 应用程序未显示

问题描述

我正在开发一个 Android 应用程序,其中包含一个带有图像的网格视图。我希望这个应用程序能够在用户想要选择图像时做出响应。我在我的应用程序清单中添加了以下内容:

<activity android:name=".activities.MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.PICK" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:mimeType="image/*" />
        </intent-filter>
</activity>

我制作了另一个小应用程序,主要功能是启动一个活动,如下所示:

Intent selectImageIntent = new Intent(Intent.ACTION_PICK);
startActivityForResult(selectImageIntent, REQUEST_SELECT_IMAGE);

当我单击运行上述代码的按钮时,我会得到一个可供选择的应用程序列表。但是,我的第一个应用程序不是其中之一。我已经调试了各种方式以及所有关于 Intent 的 SO 和 Android 文档,但没有发现任何迹象表明我在第一个应用程序中错误地编写了意图过滤器或在第二个应用程序中错误地编写了 Intent。

附加信息:
在模拟器上测试 - Nexus 5x @ 7.1.1,API 25 - 这会立即启动 Google Drive
在物理设备上测试 - Essential PH-1 @ 8.1.0,API 27 - 这给了我多个应用程序可供选择,但我的应用程序不是其中之一。

标签: androidandroid-intent

解决方案


它没有触发的原因是你没有type正确设置。从您的“另一个应用程序”执行以下操作:

Intent selectImageIntent = new Intent(Intent.ACTION_VIEW);
selectImageIntent.setType("image/*");
startActivity(selectImageIntent);

推荐阅读