Android11访问图库问题-访问被拒绝无法保存裁剪后的图片
创始人
2024-08-20 10:30:10
0

在 Android 11 上,访问图库需要通过 MediaStore API 进行,而且需要配置添加读写权限。以下是一种解决方法,可以在 onActivityResult 回调中处理裁剪后的图片并保存到图库中:

// 定义一个请求码
private static final int REQUEST_CODE_PICK_IMAGE = 1001;

// 启动图库选择器
private void startImagePicker() {
    Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    startActivityForResult(intent, REQUEST_CODE_PICK_IMAGE);
}

// 处理图库选择器回调
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == REQUEST_CODE_PICK_IMAGE && resultCode == RESULT_OK) {
        Uri uri = data.getData();
        if (uri != null) {

            // 启动裁剪器进行裁剪
            Intent intent = new Intent("com.android.camera.action.CROP");
            intent.setDataAndType(uri, "image/*");
            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
            intent.putExtra("scale", true);
            intent.putExtra("aspectX", 1);
            intent.putExtra("aspectY", 1);
            intent.putExtra("outputX", 256);
            intent.putExtra("outputY", 256);
            intent.putExtra("return-data", false);
            File file = createTempFile();
            if (file != null) {
                Uri outputUri = FileProvider.getUriForFile(this, getPackageName() + ".provider", file);
                intent.putExtra(MediaStore.EXTRA_OUTPUT, outputUri);
                intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
                intent.putExtra("noFaceDetection", true);
                startActivityForResult(intent, REQUEST_CODE_CROP_IMAGE);
            }
        }
    } else if (requestCode == REQUEST_CODE_CROP_IMAGE && resultCode == RESULT_OK) {
        // 裁剪后的图片保存到图库中
        File croppedImage = getTempFile();
        try (InputStream inputStream = getContentResolver().openInputStream(Uri.fromFile(croppedImage))) {

            ContentValues values = new ContentValues();
            values.put(MediaStore.Images.Media.DISPLAY_NAME, croppedImage.getName());
            values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
            values.put(MediaStore.Images.Media.RELATIVE_PATH, Environment.DIRECTORY_PICTURES);

            Uri uri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
            if (uri != null) {
                OutputStream outputStream = getContentResolver().open

相关内容

热门资讯

透视安卓版!wepoke辅助有... 透视安卓版!wepoke辅助有挂,wepoke辅助器真的有用吗,详细透视扑克教程wepoke辅助有挂...
wepoke辅助有挂!wepo... wepoke辅助有挂!wepoke有辅助挂吗(透视)本来是有挂(详细辅助教你攻略)(1)wepoke...
aapoker有猫腻!aapo... 自定义aapoker辅助工具存在系统规律,只需要输入自己想要的开挂功能,一键便可以生成出微扑克专用辅...
透视安卓版!aapoker透明... 透视安卓版!aapoker透明挂,wepoke里面有ai吗,详细透视揭秘教程1、该软件可以轻松地帮助...
德州之星外挂!wopoker辅... 自定义德州之星外挂系统规律,只需要输入自己想要的开挂功能,一键便可以生成出微扑克专用辅助器,不管你是...
透视有挂!wepoke是真的有... 透视有挂!wepoke是真的有挂,wepork私人局有挂吗,详细透视扑克教程1、wepoke是真的有...
德州AI智能辅助机器人!wpk... 德州AI智能辅助机器人!wpk数据抓包(透视)素来有挂(详细辅助安装教程)是一款可以让一直输的玩家,...
透视科技!wepoke有辅助挂... 透视科技!wepoke有辅助挂,wepoke显示有,详细透视解密教程;wepoke有辅助挂辅助器中分...
wpk ai辅助!德州aapo... wpk ai辅助!德州aapoker俱乐部正确打法(透视)确实真的有挂(详细辅助解密教程)是一款可以...
透视安装!wepoke有挂,w... 透视安装!wepoke有挂,wepoke软件透明功能实现方法,详细透视详细教程该软件可以轻松地帮助玩...