Android - 将图像存储到图库

Posted

技术标签:

【中文标题】Android - 将图像存储到图库【英文标题】:Android - Store Image to gallery 【发布时间】:2019-05-04 09:53:15 【问题描述】:

我正在制作一个应用程序,它允许用户更改相机的预览大小并拍照,这些照片将保存到设备的图库中,这是我的问题,图片被保存到应用程序的私有目录中没有出现在图库中。这是我的实现逻辑:

清单文件中的权限:

 <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);

这个方法被执行了,但是在图库中仍然看不到结果....

【问题讨论】:

MediaScanner 可以访问您的 pictureFile 吗?如果是,您可能可以在设备关机/开机后在图库中看到它。 【参考方案1】:

我认为每次将图像存储到私人文件夹时都需要扫描,您需要调用以下方法。

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 是出现在图库中的新文件路径。

【讨论】:

以上是关于Android - 将图像存储到图库的主要内容,如果未能解决你的问题,请参考以下文章

将相同的图库图像加载到两个不同的活动片段中 Android Picasso

将图像添加到图库

如何将图像保存到图库 Android 应用程序

将图像从图库上传到 Firebase 存储时应用程序崩溃

Android将图像从图库上传到服务器[关闭]

如何在 Android 中检测到人脸后将图像下载到图库?