카메라 및 갤러리 자르기는 android nougat 7에서 카메라를 여는 동안 android nougat 7에서 지원되지 않습니다.이 오류 메시지가 나타납니다.Nougat 7에서 안드로이드 카메라 자르기 지원 안함
android.os.FileUriExposedException :
파일 : ///storage/emulated/0/file1495176310055.jpg는 ClipData.Item.getUri() 앱의
카메라 및 갤러리 자르기는 android nougat 7에서 카메라를 여는 동안 android nougat 7에서 지원되지 않습니다.이 오류 메시지가 나타납니다.Nougat 7에서 안드로이드 카메라 자르기 지원 안함
android.os.FileUriExposedException :
파일 : ///storage/emulated/0/file1495176310055.jpg는 ClipData.Item.getUri() 앱의
을 통해 응용 프로그램 이상 노출 Android 7.0을 타겟팅하는 Android 프레임 워크는 StrictMode
API 정책을 적용하여 앱 외부에 file://
개의 URI가 노출되지 않도록합니다. 파일 URI가 포함 된 인 텐트가 앱을 나가면 FileUriExposedException
예외로 앱이 실패합니다.
응용 프로그램간에 파일을 공유하려면 content : // URI를 보내고 URI에 대한 임시 액세스 권한을 부여해야합니다. 이 사용 권한을 부여하는 가장 쉬운 방법은 FileProvider
클래스를 사용하는 것입니다. 당신은 내 솔루션을보십시오 할 수
.. 3.in 매니페스트 내부 태그
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="android3.maxtingapp.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths"/>
</provider>
에서
1.add의 고해상도/XML/provider_paths.xml
provider_paths.xml
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="images" path="."/>
</paths>
2.add 당신의 작물에 대한 활동 추가 기능 내 샘플 아래의 이미지
private void cropImage(File file) {
final int width = 400;
final int height = 200;
try {
Intent cropIntent = new Intent("com.android.camera.action.CROP");
Uri contentUri;
if(Build.VERSION.SDK_INT > M){
contentUri = FileProvider.getUriForFile(AddPlace.this,
"android3.maxtingapp.provider",
file);//package.provider
//TODO: Permission..
getApplicationContext().grantUriPermission("com.android.camera",
contentUri,
Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
cropIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
cropIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
}else{
contentUri = Uri.fromFile(file);
}
cropIntent.setDataAndType(contentUri, "image/*");
cropIntent.putExtra("crop", "true");
cropIntent.putExtra("aspectX", 2);
cropIntent.putExtra("aspectY", 1);
cropIntent.putExtra("outputX", width);
cropIntent.putExtra("outputY", height);
cropIntent.putExtra("return-data", true);
startActivityForResult(cropIntent, REQUEST_CROP_ICON);
}catch (ActivityNotFoundException a) {
Log.e("Activity Not Found",""+a.toString());
}
}
나는 이것이 someone을 위해 도움이되기를 바란다 ..
자르기 문제가 아니다. Android 7에서 파일 액세스 시스템이 변경되었습니다. 이제부터는 다른 앱이 제공된 Uris –
을 통해 앱을 넘어서서 ClipData.Item.getUri()을 통해 콘텐츠 제공 업체를 구현해야합니다. 어떻게 될지 궁금합니다. 가능한. – greenapps
https://stackoverflow.com/questions/38200282/android-os-fileuriexposed-file-storage-emulated-0-test-txt-exposed – CommonsWare