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

相关内容

热门资讯

大家学习交流!wpk积分后台管... 大家学习交流!wpk积分后台管理系统,wepokE软件透明挂,详细教程(有挂规律)-哔哩哔哩1、不需...
8个机制!微扑克全自动机器人(... 8个机制!微扑克全自动机器人(辅助挂)外挂辅助安装(2025已更新)(哔哩哔哩);微扑克简单的灵活控...
四分钟了解!喜扣跑胡子辅助器,... 《喜扣跑胡子辅助器软件透明挂》是一款多人竞技的喜扣跑胡子辅助器辅助透视游戏,你将微扑克对手来到同一个...
一秒答解(海南麻将神器)的确真... 一秒答解(海南麻将神器)的确真的有挂(透视)详细教程(有挂详情)-哔哩哔哩;一、海南麻将神器AI软件...
一分钟了解!wpk数据统计,w... 一分钟了解!wpk数据统计,wePOKE软件透明挂,详细教程(有挂透明)-哔哩哔哩;《WPK辅助透视...
透视代打!乐乐上海麻将三打一有... 透视代打!乐乐上海麻将三打一有挂的,德扑ai智能,详细教程(有挂规律)-哔哩哔哩;最新版2024是一...
科技揭秘(微扑克app)外挂辅... WePoker透视辅助版本稳定性对比与推荐‌:科技揭秘(微扑克app)外挂辅助软件(透视)原来真的有...
玩家必看科普(红龙扑克有作假)... 相信很多朋友都在电脑上玩过红龙扑克有作假吧,但是很多朋友都在抱怨用电脑玩起来不方便。为此小编给大家带...
玩家必备科技!wpeoke软件... 玩家必备科技!wpeoke软件下载,wepOKE软件透明挂,详细教程(有挂技巧)-哔哩哔哩;原来确实...
透明肯定!经典联盟辅助器,鱼扑... 透明肯定!经典联盟辅助器,鱼扑克app ai,详细教程(有挂攻略)-哔哩哔哩;支持多人共享记分板与复...