android 7.0系统解决拍照的问题android.os.FileUriExposedException:file:///storage/emulated/0/test.txt

android 7.0系统解决拍照的问题android.os.FileUriExposedException:file:///storage/emulated/0/test.txt



除了解决方案之外FileProvider,还有另一种解决方法。简单的说

Application中onCreate()中

StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
StrictMode.setVmPolicy(builder.build());

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
    builder.detectFileUriExposure();
}
本以为这样就完美解决问题了但是又有6.0权限的问题

Permission Denial: starting Intent { act=android.media.action.IMAGE_CAPTURE然后报这个错

protected static final int TAKE_PICTURE = 1;

if (Build.VERSION.SDK_INT >= 23) {
    int checkCallPhonePermission = ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.CAMERA);
    if (checkCallPhonePermission != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(SettingActivity.this, new String[]{Manifest.permission.CAMERA}, 222);
        return;
    } else {

        Intent openCameraIntent = new Intent(
                MediaStore.ACTION_IMAGE_CAPTURE);
        tempUri = Uri.fromFile(new File(Environment
                .getExternalStorageDirectory(), "image.jpg"));
        // 将拍照所得的相片保存到SD卡根目录
        openCameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, tempUri);
        startActivityForResult(openCameraIntent, TAKE_PICTURE);
    }
}else {
    Intent openCameraIntent = new Intent(
            MediaStore.ACTION_IMAGE_CAPTURE);
    tempUri = Uri.fromFile(new File(Environment
            .getExternalStorageDirectory(), "image.jpg"));
    // 将 拍照所得的相片保存到SD卡根目录
    openCameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, tempUri);
    startActivityForResult(openCameraIntent, TAKE_PICTURE);
}
 
 
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
                                       @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if (requestCode == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

    } else {
        // 没有获取 到权限,从新请求,或者关闭app
        Toast.makeText(this, R.string.get_storage_perm, Toast.LENGTH_SHORT).show();
    }
}
这样就可以完美解决拍照调系统相机崩溃的问题。
 
 

 
 


猜你喜欢

转载自blog.csdn.net/yushuaiguang/article/details/81028056
今日推荐