该代码不会将来自布局的图像存储在图库中

The code does not store image from layout in gallery

我正在开发将其图像从资源存储到图库的应用程序。使用下面的代码,它不会给出错误但不起作用。帮我解决这个问题。

RelativeLayout fulllayout;
File root = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), "/ZXMCO Images");
 fulllayout = (RelativeLayout) findViewById(R.id.layout);

public void save()
{
    fulllayout.setDrawingCacheEnabled(true);
    fulllayout.buildDrawingCache();
    Bitmap localBitmap = fulllayout.getDrawingCache();
    saveToInternalStorage(localBitmap);
}

private void saveToInternalStorage(Bitmap bitmapImage){

        File pictureFile = getOutputMediaFile();

        try {
            FileOutputStream fos = new FileOutputStream(pictureFile);
            bitmapImage.compress(Bitmap.CompressFormat.PNG, 90, fos);
            fos.close();
        } catch (FileNotFoundException e) {
            Log.d(TAG,"File not found: " + e.getMessage());
        } catch (IOException e) {
            Log.d(TAG, "Error accessing file: " + e.getMessage());
        }

     }
private File getOutputMediaFile() {

    if (! root.exists()){
        root.mkdirs();
        }


    String timeStamp = new SimpleDateFormat("ddMMyyyy_HHmm").format(new Date());
    File mediaFile;
    String mImageName="MI_"+ timeStamp +".jpg";
    mediaFile = new File(root.getPath() + File.separator + mImageName);
    return mediaFile;
}

它什么也没显示。 运行 没有错误,但在图库中找不到图像。

我认为这里的问题是图库不知道设备上存储了新图像,因此我们需要通知它

有两种方法可以做到这一点

前 - Kitkat

使用广播

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));

奇巧

您可以使用 MediaScannerConnection 扫描新文件

 MediaScannerConnection.scanFile(context, new String[]{imageURL}, null,implment Listener Here);