2017-05-09 12 views
0

SDカードにビットマップファイルを保存しました。私はそれを別のアクティビティで読みたいと思います。しかし、私は次の実行時エラーが発生し続ける:ストリームを解読できません:java.io.FileNotFoundException:file:/sdcard/oc.jpg:オープンに失敗しました:ENOENT(そのようなファイルやディレクトリはありません) E/ReadFile:別のアクティビティで同じファイルを読み込むsdcardからビットマップを読み取る

Uri uri=Uri.parse("file:///sdcard/oc.jpg"); 
//save output image in uri 
cropIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri); 

-null:私はthis solutionを試みたが、それは動作しませんでしたし、私は、同じ実行時のエラーを得た

Bitmap image4 = BitmapFactory.decodeFile("file:///sdcard/oc.jpg"); 

+0

"作物の意図でSDカードにビットマップファイルを保存しました" - [Androidには 'CROP'' Intent'がありません](https://commonsware.com/blog/2013/01/23/no -android-does-not-have-crop-intent.html)。 "ストリームをデコードできません:java.io.FileNotFoundException:file:/sdcard/oc.jpg" - パスをハードコーディングしないでください( 'Environment.getExternalStorageDirectory()'のようなメソッドを使用してください)、適切なアクセス権を持っていることを確認してください(実行時アクセス許可を含む)。 – CommonsWare

+0

私は文字列を試しましたimageInSD = Environment.getExternalStorageDirectory()。getAbsolutePath()+ "oc.jpg"; image4 = BitmapFactory.decodeFile(imageInSD);しかし、まだ私はビットマップを読み取ることに失敗し、私はランタイム許可 – MKH

+0

'.... getAbsolutePath()+" oc.jpg "'を含む '.getAbsolutePath()+"/oc.jpg "' – greenapps

答えて

0

あなたが許可を追加してください、外部ストレージに書き込む必要があります。

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

かをチェックし、外部ストレージが読み取りのために利用可能であり、

public boolean isExternalStorageWritable() { 
    String state = Environment.getExternalStorageState(); 
    if (Environment.MEDIA_MOUNTED.equals(state)) { 
     return true; 
    } 
    return false; 
} 

ルートを使用することを記述している場合Androidのルートを使用する代わりに公開ディレクトリのあなたは、外部記憶装置上のパブリックファイルを保存したい場合は、getExternalFilesDirを()

public File getAlbumStorageDir(Context context, String albumName) { 
    // Get the directory for the app's private pictures directory. 
    File file = new File(context.getExternalFilesDir(
      Environment.DIRECTORY_DCIM), albumName); 
    if (!file.mkdirs()) { 
     Log.e(LOG_TAG, "Directory not created"); 
    } 
    return file; 
} 
使用し、あなたのアプリにプライベートなファイルを保存したい場合は

は、getExternalStoragePublicDirectory()

public File getAlbumStorageDir(String albumName) { 
    // Get the directory for the user's public pictures directory. 
    File file = new File(Environment.getExternalStoragePublicDirectory(
      Environment.DIRECTORY_DCIM), albumName); 
    if (!file.mkdirs()) { 
     Log.e(LOG_TAG, "Directory not created"); 
    } 
    return file; 
} 

を使用します

と私は言及を忘れてしまった:

decodeFileパスを期待し

関連する問題