我在保存照片時出現問題,在應用程序目錄中(如示例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;
}
在我的文件路徑資源:
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="my_images" path="Android/data/com.myapp/files/Pictures" />
它打開相機,拍攝照片並返回我的活動,但我無法在任何地方找到它,所以看起來不保存照片。
好吧,我把'galleryAddPic()'放在'onActivityResult'的Override上,但沒有任何改變。 我有'CreateImageFile()'和'galleryAddPic()'我有'Uri contentUri = Uri.fromFile(photoFile);' 返回的文件可能是sendBroadcast的問題? – LorenzoBerti
@LorenzoBerti:「可能是sendBroadcast有問題嗎?」 - 使用'adb shell'來查看圖像是否存在,你要求它被保存。如果完整的照片存在,那麼媒體掃描邏輯會出現問題。如果文件存在,但是它是空的,那麼圖像捕獲邏輯就會出錯('createTempFile()'會創建一個空文件)。如果該文件不在那裏,那麼你的代碼沒有被運行。 – CommonsWare
Thankyou,我在Android/data/com.myapp/files /圖片中看到照片,但重新啓動後,但不在畫廊中,如何刷新媒體並將其放入媒體庫中? – LorenzoBerti