URI VS ACTION_GET_CONTENT

时间:2013-02-04 08:32:57

标签: android image android-intent uri

何时使用

// to get image randomly
    public static Uri getRandomImage(ContentResolver resolver) {

        String[] projection = new String[] { BaseColumns._ID
        };
        Uri uri = new Random().nextInt(1) == 0 ? Media.EXTERNAL_CONTENT_URI
                : Media.INTERNAL_CONTENT_URI;

        Cursor cursor = Media.query(resolver, uri, projection, null,
                MediaColumns._ID);
        if (cursor == null || cursor.getCount() <= 0) {
            return null;
        }

        cursor.moveToPosition(new Random().nextInt(cursor.getCount()));

        return Uri.withAppendedPath(uri, cursor.getString(0));
    }

何时使用ACTION_GET_CONTENT意图?

因为我想从Android设备中选择一张图片!

提供帮助

1 个答案:

答案 0 :(得分:0)

如果你想从Android画廊中选择一个图像,那么尝试这样的事情:

Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, 100);

要获得结果,你可以做这样的事情:

protected void onActivityResult(int requestCode, int resultCode, 
   Intent imageReturnedIntent) {
super.onActivityResult(requestCode, resultCode, imageReturnedIntent); 

switch(requestCode) { 
case REQ_CODE_PICK_IMAGE:
    if(resultCode == RESULT_OK){  
        Uri selectedImage = imageReturnedIntent.getData();
        String[] filePathColumn = {MediaStore.Images.Media.DATA};

        Cursor cursor = getContentResolver().query(
                           selectedImage, filePathColumn, null, null, null);
        cursor.moveToFirst();

        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
        String filePath = cursor.getString(columnIndex);
        cursor.close();


        Bitmap yourSelectedImage = BitmapFactory.decodeFile(filePath);
    }
}

}

您也可以参考:

How to pick an image from gallery (SD Card) for my app?