1

まず、私の許可

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

画像を保存して取得する私の方法:

private void saveIamgeToLocalStore(Bitmap finalBitmap) { 
        String root = Environment.getExternalStorageDirectory().toString();
        File myDir = new File(root + "/temp");    
        myDir.mkdirs(); 
        String fname = "Profile_Image.png";
        File file = new File (myDir, fname);
        if (file.exists()) file.delete(); 
        try {
            FileOutputStream out = new FileOutputStream(file);
            finalBitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
            out.flush();
            out.close(); 
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private void loadImageFromLocalStore(String imageURI) { 
        try {
            Uri uri = Uri.parse(Environment.getExternalStorageDirectory().toString() + imageURI); 
            Bitmap bitmap = BitmapFactory.decodeStream(getActivity().getContentResolver().openInputStream(uri));
            profileImage.setImageBitmap(bitmap);
            profileImage.setTag("Other");
            select_image_button.setText(R.string.button_remove_profile_picture); 
        } catch (FileNotFoundException e) { 
            e.printStackTrace();
        } 
    }

使用法:

saveIamgeToLocalStore(BitmapFactory.decodeFile(picturePath));
loadImageFromLocalStore("/temp/Profile_Image.png");

私は取得しています

java.io.FileNotFoundException: No content provider: ... 

警告。

私は何が欠けていますか?

PS: 画像は に保存され/mnt/sdcard/temp/ます。画像の読み込み時に警告が表示されます。

4

2 に答える 2

2

ファイルは保存されていますか?はいの場合、ファイルの読み取りを行う前にメディアスキャナーがトリガーされていない可能性があります。mediascanner はトリガーされないため、コンテンツ プロバイダーはファイルのエントリを取得しません (ファイルはインデックス化されません)。ファイルが で保存されている場合は"saveIamgeToLocalStore"、次のようにコードから mediascanner をトリガーします。

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

次に、ファイルを読み取ります。それはうまくいくはずです。

于 2013-08-06T06:50:25.280 に答える