0

res/drawableからと をGallery使用してInputStream画像を保存してOutputStreamいます。それは正常に動作し、画像を保存します。ただし、ギャラリーの画像が更新されないという問題があります。を使用してフォルダを確認するES File Explorerと、そこに画像が表示されます。また、コードが実行ddmsされるとすぐに画像を更新します。サーバーイメージを保存すると正常に動作します。この問題を防ぐには? 画像を保存したらすぐにギャラリーを更新したい。フォルダーもスキャンしようとしましたが、効果はありませんでした。私のコード:write



MediaScanner

Toast.makeText(context, "Downloading Image...\nPlease Wait.",
                Toast.LENGTH_LONG).show();

        File direct = new File(Environment.getExternalStorageDirectory()
                + "/Images");

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

        DateFormat dateFormat = new SimpleDateFormat("ddMMyyyy-HHmmss");
        Date date = new Date();
        String CurrentDateTime = dateFormat.format(date);

        InputStream input = null;
        OutputStream output = null;

        try {
            input = context.getResources().openRawResource(
                    context.getResources().getIdentifier(
                            "@drawable/" + picName, "drawable",
                            context.getPackageName()));
            output = new FileOutputStream(direct + "/" + "IMG-"
                    + CurrentDateTime + ".jpg");

            byte[] buf = new byte[1024];
            int len;
            while ((len = input.read(buf)) > 0) {
                output.write(buf, 0, len);
            }

            MediaScannerConnection.scanFile(context,
                    new String[] { direct.toString() }, null,
                    new MediaScannerConnection.OnScanCompletedListener() {
                        public void onScanCompleted(String path, Uri uri) {
                            Log.i("ExternalStorage", "Scanned " + path + ":");
                            Log.i("ExternalStorage", "-> uri=" + uri);
                        }
                    });

            Toast.makeText(context, "Image Saved.", Toast.LENGTH_LONG).show();
        } catch (Exception e) {
            Log.e("Internal Image Save Error->", e.toString());

            Toast.makeText(context,
                    "Couldn't Save Image.\nError:" + e.toString() + "",
                    Toast.LENGTH_LONG).show();
        } finally {
            try {
                if (input != null) {
                    input.close();
                }
                if (output != null) {
                    output.close();
                }
            } catch (IOException ignored) {
                Log.e("Internal Image Save Error->", ignored.toString());

                Toast.makeText(
                        context,
                        "Couldn't Save Image.\nError:" + ignored.toString()
                                + "", Toast.LENGTH_LONG).show();
            }
        }
4

1 に答える 1