Je suis en train d'enregistrer une image dans un dossier nommé "appFolder" en utilisant caméra android.Mon cible sdk est 25.Mon appareil fonctionne sur android nougat. Cependant, quand je clique sur l'image en utilisant "dispatchTakePictureIntent()". L'image n'est pas enregistrée dans appFolder. Elle est enregistrée dans le dossier DCIM/camera. Pourquoi cela se passe-t-il et comment l'enregistrer dans mon dossier personnalisé?Android image capturée en utilisant l'appareil photo ne sont pas enregistrés dans le dossier personnalisé spécifié sur android nougat
private void dispatchTakePictureIntent() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// Ensure that there's a camera activity to handle the intent
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
// Create the File where the photo should go
File photoFile = null;
try {
photoFile = createImageFile();
} catch (IOException ex) {
// Error occurred while creating the File
Log.i("imageCaptutreError", ex.getMessage());
}
// Continue only if the File was successfully created
if (photoFile != null) {
Uri photoURI = FileProvider.getUriForFile(this,
"com.abc.def",
photoFile);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
}
}
}
private File createImageFile() throws IOException {
File folder = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "appFolder");
if (!folder.exists()) {
folder.mkdir();
}
File tempFile = new File(folder, "temp_image.png");
/*new File(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "appFolder" + File.separator + "temp_image.png");*/
mCurrentPhotoPath = tempFile.getAbsolutePath();
return tempFile;
}
Fournisseur de Mainifest
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.abc.def"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"></meta-data>
</provider>
@ xml/file_paths
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="my_images" path="appFolder/" />
</paths>
a ajouté la ligne takePictureIntent.addFlags (Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION); .... mais n'était pas utile –
@PrateekRatnaker: Ensuite, l'application de la caméra décide de stocker l'image où elle veut, indépendamment de «EXTRA_OUTPUT». Il n'y a rien que vous puissiez faire à ce sujet. – CommonsWare
Puis-je obtenir le chemin de l'image enregistrée sur le résultat de l'activité et le copier à l'emplacement souhaité? –