official docs을 따라 내 앱에서 카메라 인 텐트를 실행했습니다. Jellybean에서는 5.0 이상의 장치에서 작동하지만 Jellybean에서는 작동하지 않습니다.젤리 빈에서는 FileProvider를 사용할 때 카메라 의도가 RESULT.CANCELLED를 반환합니다.
4.1 (JB)에서 4.4 (KK)까지 네이티브 카메라 앱에서 이미지를 캡처 한 후 "불행히도 카메라가 멈추었습니다"라는 메시지가 표시됩니다. 내 응용 프로그램의 onActivityResult에서 반환 된 결과는 항상 RESULT.CANCELLED입니다. 내가 도대체 뭘 잘못하고있는 겁니까?
P. UIL.fromFile (file)을 사용하여 fileprovider를 사용하지 않고 uri를 가져 오는 경우 카메라 의도가 JB에서 올바르게 작동합니다. 다음
내 코드
당신은 URL-허락 당 부여하여 코드에서해야 할// MainActivity.java
File f = PhotoHelper.createImageFile(this);
photoPath = "file:" + f.getAbsolutePath();
Uri photoURI = FileProvider.getUriForFile(this, "com.myapp.fileprovider", f);
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
startActivityForResult(takePictureIntent, Constants.NEW_TOPIC_VIA_PHOTO);
// PhotoHelper.java
public static File createImageFile(Context context) throws IOException {
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.US).format(new Date());
String imageFileName = JPEG_FILE_PREFIX + timeStamp + "_";
File storageDir = context.getExternalFilesDir(Environment.DIRECTORY_PICTURES);
return File.createTempFile(imageFileName, JPEG_FILE_SUFFIX, storageDir);
}
// AndroidManifest.xml
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.myapp.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"/>
</provider>
// file_paths.xml
<paths>
<external-path
name="App_Images"
path="Android/data/com.myapp/files/Pictures"/>
</paths>