我想在Android设备中打开默认的图库,但是当我使用以下代码时,如果用户偏好,则会打开“照片”。
我使用过的代码,
Intent in = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
in.putExtra("crop", "true");
startActivityForResult(in, RESULT_LOAD_IMAGE);
答案 0 :(得分:4)
您必须使用此代码。
通过这个你可以切换到图库。
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("content://media/internal/images/media"));
startActivity(intent);
答案 1 :(得分:0)
我认为setPackage(String packageName)可以完成您的任务。
示例
Intent in = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
in.putExtra("crop", "true");
in.setPackage(PACKAGE_NAME_OF_GALLERY); // Make sure if it is com.android.gallery3d
startActivityForResult(in, RESULT_LOAD_IMAGE);
答案 2 :(得分:0)
你可以用我在下面使用的类似方式来做到这一点。您必须手动设置Class Name
。这可能不适用于旧设备和未来的设备。类名肯定会改变。
我认为他们将摆脱Gallery应用程序,并在某些时候使用照片。
in.setClassName("com.android.gallery3d", "com.android.gallery3d.app.Gallery");
if(isAvailable(context, in)) {
//Open it.
}
else {
//Do it the old way
}
isAvailable
功能
public static boolean isAvailable(Context ctx, Intent intent) {
if(ctx == null)
return false;
final PackageManager mgr = ctx.getPackageManager();
List<ResolveInfo> list =
mgr.queryIntentActivities(intent,
PackageManager.MATCH_DEFAULT_ONLY);
return list.size() > 0;
}
答案 3 :(得分:0)
您可以使用以下内容:
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("content://media/internal/images/media"));
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);