我正在开发一个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 - 这给了我多个应用程序可供选择,但我的应用程序不是其中之一。
答案 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);