我關於如何保存圖片使用相機拍攝到畫廊Googles Official文檔按照順序。保存相機照片到相冊從片段使用文件提供
他們希望你能創建使用getExternalFilesDir
文件。
String mCurrentPhotoPath;
private File createImageFile() throws IOException {
// Create an image file name
String imageFileName = "JPEG_" + UUID.randomUUID();
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 = image.getAbsolutePath();
return image;
}
mCurrentPhotoPath等於/storage/emulated/0/Android/data/com.mycompany.myapp/files/Pictures/JPEG_22fda6f2-dad9-4dd9-b327-c1130c8df0eb187766077.jpg
但在第二天部分,最重要的部分,添加照片至圖庫,
他們說:
如果您將照片保存到 ge提供的目錄中tExternalFilesDir(),媒體掃描器無法訪問文件 ,因爲它們對您的應用程序是私人的。
這是他們使用的確切方法getExternalFilesDir()
。 :-(
所以我看着documentation上了。我不明白不夠好,還沒有搞清楚,我需要使用哪個目錄的方法。我試圖getFilesDir()
,但它不喜歡的Environment.DIRECTORY_PICTURES
。
但是他們不提供的方式使用他們的方法來保存到畫廊,他們的代碼片段不起作用
private void cameraIntent() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getActivity().getPackageManager()) != null) {
File photoFile = null;
try {
photoFile = createImageFile();
} catch (IOException ex) {
ex.printStackTrace();
}
if (photoFile != null) {
Uri photoURI = FileProvider.getUriForFile(getActivity().getApplicationContext(), "com.mycompany.myapp.fileprovider", photoFile);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
startActivityForResult(takePictureIntent, REQUEST_CODE_CAPUTURE_IMAGE);
}
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE_CAPUTURE_IMAGE && resultCode == Activity.RESULT_OK) {
galleryAddPic();
}
}
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);
}
所以我的應用程序不會不將圖片保存到畫廊。我不」看看它在哪裏保存它。
任何人都知道我做錯了什麼?
「這是他們使用的確切方法」 - 文檔中的內容不正確。 'getExternalFilesDir()'對您的應用程序是* unique *,但對您的應用程序不是* private *。 「他們的代碼段不起作用」 - 嘗試「MediaScannerConnection」及其scanFile()方法。 – CommonsWare
我試過了,照片從未保存到我的相機膠捲中。 –