有没有办法直接启动画廊?
目前:
Intent intent=new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, SOME_CONSTANT);
这会提示用户输入应用,但我想跳过此步骤。
答案 0 :(得分:0)
您需要先获取Gallery
package
名称和主Activity
班级名称。
Intent mainIntent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
查询支持的应用程序以选择图像
List<ResolveInfo> apps = getPackageManager().queryIntentActivities(mainIntent, 0);
现在,从ActivityInfo
for (ResolveInfo info :apps) {
String packageName = info.activityInfo.applicationInfo.packageName;
String activityName = info.activityInfo.name;
if(packageName.contains("gallery")){
// gallery intent
Intent galleryIntent = new Intent(Intent.ACTION_PICK);
galleryIntent.setClassName(packageName,activityName);
// start the gallery Activity
startActivityForResult(galleryIntent, PICTURE_REQUEST_CODE);
break;
}
}
注意:硬编码包名称为图库不正确的方法,如果包名称在以后的Android版本中更改,这将无法正常工作。但是当前的android版本的包名称为gallery。