私のアプリで直接写真を撮ると、写真を保存する際に問題が発生します(例:whatsappなど)。私マニフェスト私が設定しているこれらの許可で写真で撮影した写真はギャラリーに保存されません
:
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.myapp.fileprovider"
android:exported="false"
android:grantUriPermissions="true"
android:readPermission="com.myapp.READ">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"/>
</provider>
</application>
私の活動で私が持っている:
public void showCamera(View v){
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
if (intent.resolveActivity(getPackageManager()) != null) {
File photoFile = null;
try {
photoFile = createImageFile();
} catch (IOException ex) {
}
if (photoFile != null) {
Uri photoURI = FileProvider.getUriForFile(this,
"com.myapp.fileprovider",
photoFile);
intent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
startActivityForResult(intent, REQUEST_TAKE_PHOTO);
galleryAddPic();
}
}
}
String mCurrentPhotoPath;
private void galleryAddPic() {
Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
File f = new File(mCurrentPhotoPath);
Uri contentUri = Uri.fromFile(f);
mediaScanIntent.setData(contentUri);
this.sendBroadcast(mediaScanIntent);
}
private File createImageFile() throws IOException {
// Create an image file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String imageFileName = "JPEG_" + timeStamp + "_";
File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
File image = File.createTempFile(
imageFileName, /* prefix */
".jpg", /* suffix */
storageDir /* directory */
);
// Save a file: path for use with ACTION_VIEW intents
mCurrentPhotoPath = "file:" + image.getAbsolutePath();
return image;
}
そして、私のfilePathにリソースに:
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="my_images" path="Android/data/com.myapp/files/Pictures" />
カメラを開いて写真を撮って自分の活動に戻しますが、どこにも見つからないので、写真を保存しないようです。
私は 'onActivityResult'のオーバーライドに' galleryAddPic() 'を入れましたが、何も変更されていません。 'CreateImageFile()'と 'galleryAddPic()'から返された使用ファイルがあります。 'Uri contentUri = Uri.fromFile(photoFile);' sendBroadcastに問題がある可能性がありますか? – LorenzoBerti
@LorenzoBerti: "5月はsendBroadcastに問題がありますか?" - 'adb shell 'を使用して、画像が保存されるべき場所に存在するかどうかを調べます。完全な写真がある場合は、メディアスキャンロジックに問題があります。ファイルが存在するが空であれば、画像キャプチャロジックに何か問題があります( 'createTempFile()'は空のファイルを作成しています)。ファイルが存在しない場合、コードは実行されていません。 – CommonsWare
ありがとうございます、私はAndroid/data/com.myapp/files/Picturesの写真を再起動後に表示しますがギャラリーでは表示されません。どうすればメディアを更新してギャラリーに入れることができますか? – LorenzoBerti