Android Studio App编辑的图片未显示在图库中

时间:2017-10-10 09:59:30

标签: android

我创建了一个简单的Android应用程序,用于添加帧和裁剪图像,现在编辑完成后,图片保存在android root> app文件夹中,但这些图片不显示在图库中,这里是我的代码

    /**
     * Create a File for saving an image or video
     */
    private File getOutputMediaFile() {
        // To be safe, you should check that the SDCard is mounted

//        File mediaStorageDir = new File(Environment.getExternalStorageDirectory()
//                + "/Android/data"
//                + getApplicationContext().getPackageName()
//                + "/Files" + Global.AppFolder);

        File root = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), "/" + Global.AppFolder);


        // Create the storage directory if it does not exist
        if (!root.exists()) {
            if (!root.mkdirs()) {
                return null;
            }
        }
        // Create a media file name
        String timeStamp = new SimpleDateFormat("ddMMyyyy_HHmm").format(new Date());
        File mediaFile;
        String mImageName = "MI_" + timeStamp + ".jpg";
        mediaFile = new File(root.getAbsolutePath(), mImageName);
        return mediaFile;
    }

    private String getRealPathFromURI(Uri uri) {
        Cursor cursor = getContentResolver().query(uri, null, null, null, null);
        if (cursor == null) {
            return uri.getPath();
        } else {
            cursor.moveToFirst();
            String s = cursor.getString(cursor.getColumnIndex("_data"));
            cursor.close();
            return s;
        }
    }

顺便说一句,我是一名新手,并且没有很多Android编码的经验,所以我们将非常感谢您提供详细的答案和参考资料(以便进一步学习)。

2 个答案:

答案 0 :(得分:1)

在保存图片后尝试添加以下代码

ContentValues values = new ContentValues();
values.put(Images.Media.TITLE, "title");
values.put(Images.Media.DESCRIPTION, "description");
values.put(Images.Media.DATE_TAKEN, System.currentTimeMillis());
values.put(Images.ImageColumns.BUCKET_ID, root.toString().toLowerCase(Locale.US).hashCode());
values.put(Images.ImageColumns.BUCKET_DISPLAY_NAME, root.getName().toLowerCase(Locale.US));
values.put("_data", root.getAbsolutePath());
ContentResolver cr = getContentResolver();
cr.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);

答案 1 :(得分:0)

保存图像后添加这些代码

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

媒体扫描仅在系统启动时完成。因此,您需要告诉媒体扫描程序重新扫描文件。