将图像从库导入片段

时间:2016-01-29 19:24:42

标签: android android-fragments fragment navigation-drawer

我试图在导航滑块内实现一个片段。我需要在我的一个片段中创建一个按钮,以从我的默认库中导入图像。我在线尝试了很多代码,但它们似乎无法正常工作。

1 个答案:

答案 0 :(得分:0)

如果您在Android 6.0中测试您的应用程序,则依赖于您正在使用的Android版本,而不是在运行时请求权限,否则android不会返回图像。

对于Pre-Marshmallow,您可以使用代码:

Intent pickIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        pickIntent.setType("image/*");
        startActivityForResult(pickIntent, 0);

然后覆盖方法

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, requestCode, data);
        try {
            // When an Image is picked
            if (requestCode == 0 && resultCode == Activity.RESULT_OK && null != data) {
                Uri selectedImage = data.getData();

                image.setImageBitmap(BitmapFactory.decodeFile(getRealPathFromURI(selectedImage)));
            } else
                new ShowErrorToast(getActivity(), "Hey! your Android phone is busy");

        } catch (Exception e) {

        }

    }

比使用方法获取图像路径

public String getRealPathFromURI(Uri data) {
        String[] filePathColumn = {MediaStore.Images.Media.DATA};
        Cursor cursor = getContentResolver().query(data
                , filePathColumn, null, null, null);
        String picturePath = "";
        if (cursor != null) {
            cursor.moveToFirst();
            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            picturePath = cursor.getString(columnIndex);
            cursor.close();
        }
        return picturePath;
    }

对于Marshmallow,你应该要求许可运行时并遵循上面的代码