web-dev-qa-db-ja.com

Android Exception:Java.io.IOException:open failed:EACCES(Permission denied)

奇妙な理由により、キャプチャされた画像をデバイスストレージに保存するため、Androidデバイスのさまざまなタイプの問題が常に発生しています。

ここに、実際に得られているものの詳細なエラーログがあります。

Java.io.IOException: open failed: EACCES (Permission denied)
at Java.io.File.createNewFile(File.Java:940)
at com.parkhya.pick_for_shareAflash.HomeActivity.resizeImage(HomeActivity.Java:456)
at com.parkhya.pick_for_shareAflash.HomeActivity.onActivityResult(HomeActivity.Java:393)
Caused by: libcore.io.ErrnoException: open failed: EACCES (Permission denied)
at Java.io.File.createNewFile(File.Java:933)

ただし、他のすべてのAndroidアプリ(Instagramなど)は、カメラでクリックされた画像をデバイスに保存できます。誰でも、私がすべきことを提案してください。私のアプリは、カメラの写真をSDカードに保存します。

24
srsmohit

外部ストレージへの書き込みをアプリケーションに許可する権限を追加してください。

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

アプリケーションが外部ストレージから読み取ることを許可します。

WRITE_EXTERNAL_STORAGE権限を宣言するアプリには、この権限が暗黙的に付与されます。

このアクセス許可は、APIレベル19以降で適用されます。APIレベル19より前では、このアクセス許可は適用されず、すべてのアプリに外部ストレージからの読み取りアクセスが引き続き許可されます。 Android 4.1以降。

22
Jitesh Upadhyay

これはあなたを助けるかもしれません。 SDカードにファイルを書き込むときに同じ問題に直面します。ファイルを書き込むために必要なすべての権限を設定しましたが、次のようなファイルオブジェクトを使用しました。

違う:

File myFile = new File(Environment.getExternalStorageDirectory().getAbsoluteFile()+fileName);

正しい:

File myFile = new File(Environment.getExternalStorageDirectory().getAbsoluteFile(), fileName);

これは、パスが間違っていたことを意味します。

21
Smeet

私が見つける解決策は

エミュレータの編集1. Android仮想デバイスマネージャに移動して、エミュレータを編集します2.尊敬されるエミュレータのSdカードに100 MBと設定し、Okと言います3.エミュレータを保存して閉じて起動します4。保存されたパスはDDMS mnt/sdcard/yourfilenameをクリックします

0
madmaskd