使用Intent.ACTION_PICK启动活动时,我的Android应用程序未显示

时间:2018-05-06 04:22:50

标签: android android-intent

我正在开发一个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);

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

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

2 个答案:

答案 0 :(得分:2)

未触发的原因是您未正确设置type。从您的“其他应用程序”执行以下操作:

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

答案 1 :(得分:1)

您需要设置Intent的类型。正如您在AndroidMenifest.xml文件"image/*"中提到的那样,您需要在说明Intent之前进行设置。

Intent selectImageIntent = new Intent(Intent.ACTION_PICK);
selectImageIntent.setType("image/*");
startActivityForResult(selectImageIntent, REQUEST_SELECT_IMAGE);