前提・実現したいこと
アンドロイドアプリを作成中です。
QR画像を生成し、アプリの内部ストレージに保存したいです
ですが、画像生成後、保存する処理がうまくいきません
QR画像をbitmap形式で生成 > 内部ストレージにjpgとして保存したいです
言語は[kotlin]
QRコード生成のライブラリは[ZXing]を使用してます
発生している問題・エラーメッセージ
log
1[logcat] 2 Access denied finding property "ro.serialno 3[debug] 4 java.io.FileNotFoundException: /storage/emulated/0/1.jpg (Permission denied)
該当のソースコード
Kotlin
1/* 2 * 商品追加アクティビティ 3 */ 4 5/* 6* QRコード生成 7*/ 8val size = 500 9val barcodeEncoder = BarcodeEncoder() 10//QRコードをBitmapで作成 11val bitmap = barcodeEncoder.encodeBitmap( 12 thisItmId.toString(), // thisItmId:商品ID 13 BarcodeFormat.QR_CODE, 14 size, 15 size 16) 17 18// 保存処理開始 19val root: File = Environment.getExternalStorageDirectory() 20// ファイル名を[商品Id.jpg]に設定 21// 下記の処理中に、[FileNotFoundException]を発生します 22val fos = FileOutputStream( File(root, thisItmId.toString().plus(".jpg"))) 23 24 25// jpegで保存 26bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos) 27// 保存処理終了 28fos.close()
試したこと
内部ストレージへのアクセス権限の問題と想定し、[AndroidManifest.json]に以下を追記しました。
解決せずログ出力は同じ文言でした。
<uses-permission android:name="android.permission.ASEC_ACCESS" tools:ignore="ProtectedPermissions" /> <uses-permission android:name="android.permission.ASEC_CREATE" tools:ignore="ProtectedPermissions" /> <uses-permission android:name="android.permission.ASEC_DESTROY" tools:ignore="ProtectedPermissions" /> <uses-permission android:name="android.permission.ASEC_MOUNT_UNMOUNT" tools:ignore="ProtectedPermissions" /> <uses-permission android:name="android.permission.ASEC_RENAME" tools:ignore="ProtectedPermissions" />
編集
コメント[保存処理開始]に関する処理を修正しました
が、画像の生成はできていません
スマホから、[アプリ情報>許可>ストレージ]の選択をできるようになり、trueにしています。
Kotlin
1/* 2 * QRコード生成 3 */ 4 5// val root: File = Environment.getExternalStorageDirectory() 6// 保存処理開始 7val fos = FileOutputStream( File(ContextCompat.getDataDir(applicationContext), 8 thisItmId.toString().plus(".jpg"))) 9// jpegで保存 10bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos) 11// 保存処理終了 12fos.close() 13
log
1E/ANDR-PERF: IPerf::tryGetService failed!
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/21 12:57