拍了照片后点勾就直接闪退了,也没有保存到手机里,华为p8测的
拍完照就闪退了,也没有被保存
拍完照就闪退了,也没有被保存
2017-07-21
如果已经升级到android6.0以上会有个运行时权限,按老师这样敲就sd卡中有图片但是加载不出来。
解决方法:
1、由于拍照要用到CAMERA权限,所以现在Manifest文件中加上
<uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
2、申请运行时权限
将第二个按钮的click事件修改如下
btnStartCamera2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { List<String> permissionList = new ArrayList<String>(); if(ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { permissionList.add(Manifest.permission.READ_EXTERNAL_STORAGE); } if(ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { permissionList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); } if(ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { permissionList.add(Manifest.permission.CAMERA); } if(!permissionList.isEmpty()) { String[] permissions = permissionList.toArray(new String[permissionList.size()]); ActivityCompat.requestPermissions(MainActivity.this,permissions,1); } else { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); Uri photoUri = Uri.fromFile(new File(mFilePath)); intent.putExtra(MediaStore.EXTRA_OUTPUT,photoUri); startActivityForResult(intent,REQUEST2); } } });
主要进行运行时权限的申请工作,申请了ManiFest中申请的三个静态权限。
然后
在MainActivity中添加如下代码
@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if(requestCode == 1) { if(grantResults.length > 0) { for(int result : grantResults) { if(result != PackageManager.PERMISSION_GRANTED) { Toast.makeText(MainActivity.this,"必须同意所有权限才能使用本程序",Toast.LENGTH_SHORT).show(); finish(); return; } } Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); Uri photoUri = Uri.fromFile(new File(mFilePath)); intent.putExtra(MediaStore.EXTRA_OUTPUT,photoUri); startActivityForResult(intent,REQUEST2); } else { Toast.makeText(MainActivity.this,"发生未知错误",Toast.LENGTH_SHORT).show(); finish(); } } }
主要进行申请权限时是否被同意的情况
最后
如果三个权限都同意了的话ImageView就能成功加载出图片了。
祝你成功了。
举报