安卓7.0手机拍照闪退问题解决

最近遇到7.0的手机发现之前跳转拍照直接闪退了,网速百度了一下,原来7.0拍照需要兼容android7.0 使用共享文件的形式,接下来我就告诉大家怎么修改了,直接上代码

  Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                    takePhotofile = new File(Environment.getExternalStorageDirectory(),
                            Path.PATH_DOWNLOAD_IMG+json.getString("keyword") + "_" + System.currentTimeMillis() + ".jpg");
                    //获取系統版本
                    int currentapiVersion = android.os.Build.VERSION.SDK_INT;
                        if (currentapiVersion < 24) {
                            // 从文件中创建uri
                            phoneuri = Uri.fromFile(takePhotofile);
                            intent.putExtra(MediaStore.EXTRA_OUTPUT, phoneuri);
                        } else {
                            //兼容android7.0 使用共享文件的形式
                            ContentValues contentValues = new ContentValues(1);
                            contentValues.put(MediaStore.Images.Media.DATA, takePhotofile.getAbsolutePath());
                            //检查是否有存储权限,以免崩溃
                            if (ContextCompat.checkSelfPermission(webView.context, Manifest.permission.WRITE_EXTERNAL_STORAGE)
                                    != PackageManager.PERMISSION_GRANTED) {
                                //申请WRITE_EXTERNAL_STORAGE权限
                                Toast.makeText(webView.context, "请开启存储权限", Toast.LENGTH_SHORT).show();
                                return;
                            }
                            phoneuri = ((Activity) webView.getContext()).getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);
                            intent.putExtra(MediaStore.EXTRA_OUTPUT, phoneuri);
                        }
                    // 开启一个带有返回值的Activity,请求码为PHOTO_REQUEST_CAREMA
                    ((Activity) webView.getContext()).startActivityForResult(intent, REQUEST_TAKE_PHOTO);

然后在onActivityResult获取takePhotofile 文件的路径就可以啦!

posted on 2018-05-11 12:40  oooo呼呼  阅读(1146)  评论(0编辑  收藏  举报