1

既にダウンロードされている画像を携帯電話のギャラリーに表示するようにアプリに指示しようとしています。画像は適切にダウンロードされ、アプリに表示されます。拡張子はなく、名前は md5 のみです。

これが私がそうしようとしている方法です:

public static void makePhotoAppearOnGallery(Activity activity, String md5) {
        final String extStorageDirectory = Environment
                .getExternalStorageDirectory().toString();
        final String festivalDirectory_path = extStorageDirectory
                + Constants.IMAGES_STORAGE_PATH;
        File imageOutputFile = new File(festivalDirectory_path, "/");
        if (imageOutputFile.exists() == false) {
            imageOutputFile.mkdirs();
        }
        File imageFile = new File(imageOutputFile, md5);
        Bitmap bm = decodeFile(imageFile.getAbsoluteFile());
        OutputStream outStream = null;
        try {
            outStream = new FileOutputStream(imageFile);
        } catch (FileNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        bm.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
        try {

            outStream.flush();
            outStream.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            MediaStore.Images.Media.insertImage(activity.getContentResolver(), festivalDirectory_path, festivalDirectory_path+"/"+md5, "myDownloadedPics");
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        scanFile(imageFile,activity);


    }
     public static void scanFile(File downloadedFile, Context mContext){
         Uri contentUri = Uri.fromFile(downloadedFile);
         Intent mediaScanIntent = new Intent("android.intent.action.MEDIA_SCANNER_SCAN_FILE");
         mediaScanIntent.setData(contentUri);
         mContext.sendBroadcast(mediaScanIntent);
     }

アプリは次の行でクラッシュします。

MediaStore.Images.Media.insertImage(activity.getContentResolver(), festivalDirectory_path, festivalDirectory_path+"/"+md5, "myDownloadedPics");

このメッセージで:

java.io.FileNotFoundException: /mnt/sdcard/data/com.example.app/images: open failed: EISDIR (ディレクトリです)

誰がそれが何から来るのか知っていますか?

4

1 に答える 1

0

私も同じ問題を抱えていました。このエラーは、同じファイル名のフォルダーがある場合に発生することがわかりました。たとえば、「log.txt」という名前のフォルダーがありました。

于 2012-07-13T14:34:34.000 に答える