1.在AndroidManifest中添加相机和文件读写权限 出现该种报错是因为权限被限制,需要自行设置 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.SET_WALLPAPER"/>
![](https://img-blog.csdnimg.cn/20210809144916536.png) 2. 在调用相机的Java文件中添加下面代码 ? ? public static final int TAKE_PHOTO = 1; ? ? public static final int CROP_PHOTO = 2; ? ? private Button takePhotoBn; ? ? private ImageView showImage; ? ? private Uri imageUri; //图片路径 ? ? private String filename; //图片名称
?//6.0以上需要调用权限校验 ? ? private static final int REQUEST_EXTERNAL_STORAGE = 1; ? ? private static String[] PERMISSIONS_STORAGE = { ? ? ? ? ? ? Manifest.permission.READ_EXTERNAL_STORAGE, ? ? ? ? ? ? Manifest.permission.WRITE_EXTERNAL_STORAGE, ? ? ? ? ? ? Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS}; ? ? //在 Activity 中添加权限校验 ? ? public static void verifyStoragePermissions(Activity activity) { ? ? ? ? int permission = ActivityCompat.checkSelfPermission(activity, ? ? ? ? ? ? ? ? Manifest.permission.ACCESS_FINE_LOCATION);
? ? ? ? if (permission != PackageManager.PERMISSION_GRANTED) { ? ? ? ? ? ? ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, ? ? ? ? ? ? ? ? ? ? REQUEST_EXTERNAL_STORAGE); ? ? ? ? } ? ? }
![](https://img-blog.csdnimg.cn/20210809144900385.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xpdW1vdG9y,size_16,color_FFFFFF,t_70) ? 在onCreate中加入以下代码调用上述方法
?//6.0以上需要调用权限校验 ? ? ? ? verifyStoragePermissions(this); ? ? ? ? takePhotoBn = (Button) findViewById(R.id.button); ? ? ? ? showImage = (ImageView) findViewById(R.id.imageView); ? ? ? ? //取消严格模式 ?FileProvider ? ? ? ? if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { ? ? ? ? ? ? StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder(); ? ? ? ? ? ? StrictMode.setVmPolicy( builder.build() ); ? ? ? ? }
![](https://img-blog.csdnimg.cn/20210809145012868.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xpdW1vdG9y,size_16,color_FFFFFF,t_70) ?3.在AndroidManifest的application中添加android:requestLegacyExternalStorage=“true”
![](https://img-blog.csdnimg.cn/img_convert/da5313534c5f8ef4e643a96e509cdc00.png#pic_center)
?4、确定你的手机没有连接到电脑,因为SD卡只能被手机访问或者被电脑访问,不能二者同时访问。
5、如果你的应用需要创建文件或者目录,还需要添加如下权限:
?<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
|