2016-11-07 84 views
0

在我的应用程序中,我试图只打开默认的内置图库应用程序,甚至没有照片应用程序和其他文件浏览器应用程序。点击按钮将直接登陆画廊,我该怎么做?在Android中如何使用intent打开系统内置的gallery应用程序?

我的代码 'Intent intent = new Intent(Intent.ACTION_PICK); intent.setType(“image/*”); startActivityForResult(intent,PICK_IMAGE);'

+0

[从Android的意图打开多媒体应用程序(的可能的复制http://stackoverflow.com/questions/16928727/open-gallery-app-from- android-intent) –

+0

@maxost不,我想直接打开内置的手机图库应用程序,而不是任何其他应用程序,如照片。 – droidgeek

+2

有大约20亿个Android设备,由数百个制造商的数千种设备模型组成。没有必要有一个“默认内置画廊”。那些做的将会有不同的,因为制造商通常会自己定制“定制画廊”。没有确定的方式来识别这样的应用程序,更不用说启动它了。 – CommonsWare

回答

0

试试这个...

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清单文件

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

0

尝试像这样

清单文件
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"/> 
0

试试这个: -

公共静态最终诠释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; 
    } 
+0

不工作。没有错误,但它显示文件选择器...我不想要that.on按钮点击它应该直接在画廊 – droidgeek

+1

你应该知道,一些设备上运行棒棒糖和以上的Android版本不再存在图库。照片应用程序是替代品,这就是为什么我们现在使用文件选择器。但如果你仍然需要打开直接画廊你可以使用这个: - 意图galleryIntent =新意图(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media .EXTERNAL_CONTENT_URI); startActivity(galleryIntent); –

相关问题