新版本 的 android 11 系统剪切失效,调用失败,怎样设置

liangfang 2020-08-05 10:24:40
Uri furl=?????? Uri.parse(试过公有,私有 文件也不行) //"content://media/external/images/media" 也不行
Uri outurl=??? ?Uri.parse(试过公有,私有 文件也不行)

Intent intent1 = new Intent("com.android.camera.action.CROP");
intent1.setDataAndType(furl, "image/*");
intent1.putExtra("crop", "true");
intent1.putExtra(MediaStore.EXTRA_OUTPUT, outurl);//
intent1.putExtra("aspectX", 1);
intent1.putExtra("aspectY", 1);
intent1.putExtra("outputFormat", Bitmap.CompressFormat.JPEG);
intent1.putExtra("outputX", 720);
intent1.putExtra("outputY", 720);
intent1.putExtra("return-data", false);
startActivityForResult(intent1, 0x222);


新版本 的 android 11 系统剪切,调用不动,>=android 10,是正常,改变用 android 11,就失败,求可行的源码

全网找遍,没有合适的方案
...全文
4795 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dullyoung 2020-11-20
  • 打赏
  • 举报
回复
    Intent cut = new Intent("com.android.camera.action.CROP");
        cut.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
        cut.setDataAndType(imageUri, "image/*");
        // 下面这个crop=true是设置在开启的Intent中设置显示的VIEW可裁剪
        cut.putExtra("crop", "true");
        // aspectX aspectY 是宽高的比例
        cut.putExtra("aspectX", 1);
        cut.putExtra("aspectY", 1);
        // outputX outputY 是裁剪图片尺寸
        cut.putExtra("outputX", 480);
        cut.putExtra("outputY", 480);
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
            File file = new File(mFilePath, mFileCropName);
            if (!file.exists()) {
                try {
                    new File(mFilePath).mkdirs();
                    file.createNewFile();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            cut.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));//保存到uri指定的位置
        }
        try {
            startActivityForResult(cut, USE_CROP);
        } catch (Exception e) {
            e.printStackTrace();
            ToastCompat.show(this, "未找到剪切程序,自动剪切", Toast.LENGTH_SHORT);
            cropPicByGlide();
        }
完整代码
Dullyoung 2020-11-20
  • 打赏
  • 举报
回复
搞了一下午 已解决。针对android 11 intent1.setDataAndType(uri, "image/*");,如果是7.0及以上的系统使用FileProvider的方式创建一个Uri,7一下 Uri.fromFile,不要传cut.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));//保存到uri指定的位置,指定位置就剪切不了,不指定位置 在onAcrivityResult里面data.getdata就可以获取到uri,然后用Glide.asfile就可以获取到剪切后的文件。
Mr_Feng_ 2020-11-19
  • 打赏
  • 举报
回复
是不是targetVersion 提到30了?
nuptzwt 2020-10-15
  • 打赏
  • 举报
回复
楼主你找到了合适的解决方案没有。。。。最近项目适配碰到这个坑了,求指导啊。。。。

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧