我正在制作一个应用程序,允许用户更改相机的预览大小并拍摄照片,这些照片将保存到设备的图库中,这是我的问题,它是保存到应用程序的私人目录中,它不会出现在图库中。下面是我的实现逻辑:
清单文件中的权限:
<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>在这里,我在私有目录中创建并存储文件:
private Camera.PictureCallback mPicture = new Camera.PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
File pictureFile = getOutMediaFile(MEDIA_TYPE_IMAGE);
if(pictureFile==null){
Log.d(TAG,"Error creating media file, check storage permission: ");
return;
}
try {
FileOutputStream fos = new FileOutputStream(pictureFile);
fos.write(data);
fos.close();
galleryAddPic(pictureFile);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
};这是将图片保存到图库的方法:
private void galleryAddPic(File pictureFile){
Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri contentUri = Uri.fromFile(pictureFile);
mediaScanIntent.setData(contentUri);
this.sendBroadcast(mediaScanIntent);
}此方法已执行,但仍无法在库中看到结果...
发布于 2018-12-03 13:50:53
我认为你需要扫描每一次当你存储图像到私人文件夹时,你需要调用下面的方法。
public static void reScanMediaDirectory(Context context, String path) {
MediaScannerConnection.scanFile(
context, new String[]{path}, null, new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
}
});
}path其中
是显示在图库中的新文件路径。
https://stackoverflow.com/questions/53588076
复制相似问题