奇妙な理由により、キャプチャされた画像をデバイスストレージに保存するため、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カードに保存します。
外部ストレージへの書き込みをアプリケーションに許可する権限を追加してください。
<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE"/>
アプリケーションが外部ストレージから読み取ることを許可します。
WRITE_EXTERNAL_STORAGE権限を宣言するアプリには、この権限が暗黙的に付与されます。
このアクセス許可は、APIレベル19以降で適用されます。APIレベル19より前では、このアクセス許可は適用されず、すべてのアプリに外部ストレージからの読み取りアクセスが引き続き許可されます。 Android 4.1以降。
これはあなたを助けるかもしれません。 SDカードにファイルを書き込むときに同じ問題に直面します。ファイルを書き込むために必要なすべての権限を設定しましたが、次のようなファイルオブジェクトを使用しました。
違う:
File myFile = new File(Environment.getExternalStorageDirectory().getAbsoluteFile()+fileName);
正しい:
File myFile = new File(Environment.getExternalStorageDirectory().getAbsoluteFile(), fileName);
これは、パスが間違っていたことを意味します。
私が見つける解決策は
エミュレータの編集1. Android仮想デバイスマネージャに移動して、エミュレータを編集します2.尊敬されるエミュレータのSdカードに100 MBと設定し、Okと言います3.エミュレータを保存して閉じて起動します4。保存されたパスはDDMS mnt/sdcard/yourfilenameをクリックします