1

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> 

답변