图片未在图库中更新

时间:2014-07-24 06:57:56

标签: android

我是android的新手,我使用adb push将文件从主机pc复制到/ storage / sdcard1。 但无法从图库应用程序查看该文件。它通过ls命令显示,当我重新启动设备时,图库应用程序正确显示文件。但是它立即没有在库中更新,所以任何人都可以帮我解决这个问题吗?

提前致谢

2 个答案:

答案 0 :(得分:0)

因为您的图库数据库未更新。

您可以手动运行媒体扫描程序

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

或使用

MediaStore.Images.Media.insertImage();

您也可以手动插入图库(媒体)数据库。

private Uri insertMediaStore(String dirPath, String filename, byte[] jpegByteArray) {
    String filePath = dirPath + "/" + filename;

    try {
        ContentValues values = new ContentValues();
        values.put(Images.Media.DATE_TAKEN, new Date().getTime());
        values.put(Images.Media.ORIENTATION, "0");

        String title = filename.replace(".jpg", "");

        values.put(Images.Media.TITLE, title);
        values.put(Images.Media.DISPLAY_NAME, filename);
        values.put(Images.Media.MIME_TYPE, "image/jpeg");
        values.put(Images.Media.SIZE, jpegByteArray.length);
        values.put("_data", filePath);

        Uri uri = getContentResolver().insert(Images.Media.EXTERNAL_CONTENT_URI, values);
        OutputStream os = getContentResolver().openOutputStream(uri);
        os.write(jpegByteArray);
        os.close();

        Logger.info("MediaStore Inserted URI:" + uri.toString());

        return uri;
    } catch(Exception ex) {
        Logger.error(ex, "Failed to save the Bitmap file. FilePath: %s", filePath);
    }

    return null;
}

代码参考:http://helloworld.naver.com/helloworld/1819

答案 1 :(得分:0)

您必须通知媒体扫描程序捕获新创建文件的元数据。像Gallery这样的应用程序可以在元数据数据库上工作,而不是直接在文件系统上工作。

以编程方式使用MediaScannerConnection

由于您正在使用adb,因此可以send a broadcast to invoke media scanner

媒体扫描程序作为启动顺序的一部分运行,这就是重启后它运行的原因。