想要在Android中完全打开Gallery

时间:2014-06-10 06:31:10

标签: android gallery

我想在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);

4 个答案:

答案 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);