调用系统相机,小米4拍照返回空,魅蓝无法点击确认

qvttter 2016-09-18 09:39:28
调用系统拍照,MediaStore.ACTION_IMAGE_CAPTURE,
小米4,uri有返回,file:///storage/emulated/0/***/***.jpg
在imageview里setImageURI无法显示。(测试机小米4安卓6.0)

魅蓝手机,拍完照,点击确认,无法返回到上一级activity。
求助
...全文
601 10 打赏 收藏 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿不阿 2016-10-14
  • 打赏
  • 举报
回复
戒不掉的码瘾 2016-09-26
  • 打赏
  • 举报
回复
楼主可有解决,我也遇到这个问题
qvttter 2016-09-18
  • 打赏
  • 举报
回复
引用 5 楼 a511341250 的回复:
那你用小米手机debug看下问题
这是我onActivityResult里面的部分代码
File file = new File(helper.path + helper.fileName);
            helper.picPath = file.getAbsolutePath();
            Uri uri = Uri.fromFile(file);
            int degree = RotatePicUtils.readPictureDegree(helper.picPath);
            //有些机型存在手机拍摄的照片自动横着的问题,遇到横着的,自动转过来。
            Bitmap newBitmap = RotatePicUtils.rotateImageView(degree, getBitmap(uri));
            cImageView.setImageBitmap(newBitmap);
这是点击拍照的事件的部分代码
mBtnTake.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (dialog!=null&&dialog.isShowing()){
                    dialog.dismiss();
                }
                Intent intent;
                if (ContextCompat.checkSelfPermission(mActivity, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED
                        || ContextCompat.checkSelfPermission(mActivity, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
                    //请求权限
                    ActivityCompat.requestPermissions(mActivity,
                            new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_CAMERA);
                    //判断是否需要 向用户解释,为什么要申请该权限
                    ActivityCompat.shouldShowRequestPermissionRationale(mActivity,
                            Manifest.permission.READ_CONTACTS);
                } else {
                    intent = new Intent();
                    intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
                    intent.addCategory(Intent.CATEGORY_DEFAULT);
                    Uri uri = getFileUri();
                    if (uri != null) {
                        intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
                    }
                    mActivity.startActivityForResult(intent, 0);
                }

            }
        });
    }

    public Uri getFileUri() {
        fileName = "bzt_" + System.currentTimeMillis() + ".jpg";

        File file;
        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
            path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/bzt/temp/";
            File pathDir = new File(path);
            if (!pathDir.exists()) {

                pathDir.mkdir();
            }
            picPath = path + fileName;
            file = new File(picPath);
            return Uri.fromFile(file);
        }     
        return null;
    }
debug模式下,bitmap为android.graphics.Bitmap@8d4222e file 为 /storage/emulated/0/bzt/temp/bzt_1474166663890.jpg uri 为 file:///storage/emulated/0/bzt/temp/bzt_1474166663890.jpg
ESC尛蜜蜂 2016-09-18
  • 打赏
  • 举报
回复
那你用小米手机debug看下问题
qvttter 2016-09-18
  • 打赏
  • 举报
回复
引用 3 楼 a511341250 的回复:
可能返回的图片有点大,导致oom了,所以无法显示。 我先把图片处理了下再保存在本地
可是我手边别的机器没没这毛病啊,魅族MX3,酷派,努比亚,连现在安卓阵营中最牛X的三星S7EDGE,都能正常显示。唯独这个小米4,真是操碎了心。
ESC尛蜜蜂 2016-09-18
  • 打赏
  • 举报
回复
可能返回的图片有点大,导致oom了,所以无法显示。 我先把图片处理了下再保存在本地
qvttter 2016-09-18
  • 打赏
  • 举报
回复
引用 1 楼 a511341250 的回复:

tempImagePath = "";
if (data != null) { // 相册获取地址
					Uri uri = data.getData();
					String[] proj = { MediaStore.Images.Media.DATA }; // null
					Cursor actualimagecursor = getContentResolver().query(uri,
							proj, null, null, null);
					if(actualimagecursor == null) { // 小米为空的处理
						tempImagePath = uri.getPath();
					} else {
                                               int actual_image_column_index = actualimagecursor
								.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
						actualimagecursor.moveToFirst();
						tempImagePath = actualimagecursor
								.getString(actual_image_column_index);
                                        }
试了,不行,不管用,就像我一开始问的,绝对路径我已经获取到了。可是就是无法在ImageView里setImageUR显示
ESC尛蜜蜂 2016-09-18
  • 打赏
  • 举报
回复

tempImagePath = "";
if (data != null) { // 相册获取地址
					Uri uri = data.getData();
					String[] proj = { MediaStore.Images.Media.DATA }; // null
					Cursor actualimagecursor = getContentResolver().query(uri,
							proj, null, null, null);
					if(actualimagecursor == null) { // 小米为空的处理
						tempImagePath = uri.getPath();
					} else {
                                               int actual_image_column_index = actualimagecursor
								.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
						actualimagecursor.moveToFirst();
						tempImagePath = actualimagecursor
								.getString(actual_image_column_index);
                                        }
qvttter 2016-09-18
  • 打赏
  • 举报
回复
引用 7 楼 pengguohua1988 的回复:
代码加载不出来的话,先确认下本地保存的是否是图片,还是只是一个图片格式的文件,并没有内容
有图片文件,可以打开
MR__P 2016-09-18
  • 打赏
  • 举报
回复
代码加载不出来的话,先确认下本地保存的是否是图片,还是只是一个图片格式的文件,并没有内容

80,490

社区成员

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

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