1

official docsに続き、私のアプリでカメラインテントを実行しました。 5.0以上のデバイスで動作しますが、Jellybeanでは動作しません。 012(JB)〜4.4(KK)のネイティブカメラアプリでは、撮影後に「残念ながらカメラが停止しました」と表示されます。私のアプリのonActivityResultでは、返される結果は常にRESULT.CANCELLEDです。私は間違って何をしていますか?Jellybeanでは、FileProviderを使用しているときにカメラインテントがRESULT.CANCELLEDを返します

P.S.私がfileproviderを使用せず、Uri.fromFile(file)を使用して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> 

答えて