【问题标题】:In Android how to open system built in gallery app using intent?在 Android 中,如何使用意图打开内置画廊应用程序的系统?
【发布时间】:2016-11-07 11:09:40
【问题描述】:

在我的应用程序中,我试图只打开默认的内置图库应用程序,甚至不打开照片应用程序和其他文件浏览器应用程序。点击按钮会直接进入图库,我该怎么做?

我的代码 '意图意图=新意图(意图.ACTION_PICK); intent.setType("图片/*"); startActivityForResult(intent,PICK_IMAGE);'

【问题讨论】:

  • @maxost 不,我想直接打开手机内置的图库应用,而不是像照片这样的任何其他应用。
  • 大约有 20 亿台 Android 设备,由来自数百家制造商的数千种设备型号组成。没有人必须有一个“默认内置画廊”。那些做的会有不同的,因为制造商通常会运送他们自己定制的“内置画廊”。没有保证可以识别此类应用程序的方法,更不用说启动它了。

标签: android android-intent gallery android-gallery


【解决方案1】:

像这样试试

    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);//
    startActivityForResult(Intent.createChooser(intent, "Select Picture"),PICK_IMAGE);

获取图片的 OnActivityResult

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == PICK_IMAGE)
    {
        if (resultCode == Activity.RESULT_OK)
        {
            if (data != null)
            {
                try
                {

                    Bitmap bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), data.getData());

                } catch (IOException e)
                {
                    e.printStackTrace();
                }

            }
        } else if (resultCode == Activity.RESULT_CANCELED)
        {
            Toast.makeText(getActivity(), "Cancelled", Toast.LENGTH_SHORT).show();
        }
    } }

在清单文件中添加权限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"  />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

【讨论】:

    【解决方案2】:

    试试这个……

     private int PICK_IMAGE_REQUEST = 1;
    
    tvGallery.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        Intent intent = new Intent();
                        // Show only images, no videos or anything else
                        intent.setType("image/*");
                        intent.setAction(Intent.ACTION_GET_CONTENT);
                        // Always show the chooser (if there are multiple options available)
                        startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);
    
    
                    }
                });
    

    Android 清单文件

    中使用权限

    &lt;uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /&gt;

    【讨论】:

      【解决方案3】:

      试试这个:-

      public static final int GALLERY_PICTURE = 1;
      private String selectedImagePath = null;
      
      Intent intent = new Intent();
                      intent.setType("image/*");
                      intent.setAction(Intent.ACTION_GET_CONTENT);
                      startActivityForResult(Intent.createChooser(intent, "Select File"), GALLERY_PICTURE);
      
      onActivityResult()  :-
      
      if (requestCode == GALLERY_PICTURE && resultCode == RESULT_OK) {
                  selectedImagePath = getRealPathFromURI_API19(this, data.getData());
                  Log.e("gallery path", selectedImagePath);  
              }
      
      
      @SuppressLint("NewApi")
          public static String getRealPathFromURI_API19(Context context, Uri uri) {
              String filePath = "";
              String wholeID = DocumentsContract.getDocumentId(uri);
              String id = wholeID.split(":")[1];
              String[] column = {MediaStore.Images.Media.DATA};
              String sel = MediaStore.Images.Media._ID + "=?";
              Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                      column, sel, new String[]{id}, null);
              int columnIndex = cursor.getColumnIndex(column[0]);
              if (cursor.moveToFirst()) {
                  filePath = cursor.getString(columnIndex);
              }
              cursor.close();
              return filePath;
          }
      

      【讨论】:

      • 不工作。没有错误,但它显示文件选择器......我不想要那个。点击按钮应该直接进入画廊
      • 您应该知道,Gallery 在某些运行 Lollipop 及以上 android 版本的设备上不再存在。照片应用程序是我们现在使用文件选择器的替代品。但是如果您仍然需要打开直接图库您可以使用:- Intent galleryIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media .EXTERNAL_CONTENT_URI); startActivity(galleryIntent);
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-04
      • 2018-07-06
      • 1970-01-01
      相关资源
      最近更新 更多