質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

解決済

1回答

873閲覧

android OS13にアップされたら ファイル書き込みができなくなった

yk3125

総合スコア91

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2023/03/13 08:07

実現したいこと

android でJAVAを使って開発しています。
今までは問題なくファイル書き込みが動作していたのですが OSが13だと動作しないので
ファイル書き込みができるようにしたい

発生している問題・エラーメッセージ

JAVAでログファイルを出力するところでエラー発生します
ファイルの場所は /storage/emulated/0/app/patoview2021D/log/err_2023_03_13.txt になります
FileOutputStream fos = new FileOutputStream(fname, true); でエラーになります
エラー内容は
java.io.FileNotFoundException: /storage/emulated/0/app/log/err_2023_03_13.txt: open failed: EPERM (Operation not permitted)

該当のソースコード

JAVA

1try{ 2 mPath = Environment.getExternalStorageDirectory() + "/app/log/"; 3 SimpleDateFormat DF = new SimpleDateFormat("yyyy_MM_dd"); 4 String fname = mPath + "err_" + DF.format(date1) + ".txt"; 5 6 FileOutputStream fos = new FileOutputStream(fname, true); 7 OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8"); 8 BufferedWriter bw = new BufferedWriter(osw); 9 10 DF = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS"); 11 String s1 = DF.format(new Date()) + " " + inClass + ":" + inFunc + " " + inMsg; 12 bw.write(s1 + "\r\n"); 13 bw.flush(); 14 bw.close(); 15} catch (Exception e) { 16 e.printStackTrace(); 17} 18

試したこと

ネットで調べるとOS13からは権限が厳しくなるみたいで
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
パーミッションを追加しろと書いてあったが変わらずです。
いろいろと検索してみたのですが分かりませんでした。
分かる方がいれば教えてください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

参考にしたアドレス
http://blog.loadlimits.info/2012/05/getexternalfilesdir%E3%81%8Cnull%E3%82%92%E8%BF%94%E3%81%99%E5%A0%B4%E5%90%88/

/Android/data/パッケージ名/file/ の下に置く形になる
File dst = new File(mContext.getExternalFilesDir(null), fname);
FileOutputStream fos = new FileOutputStream(dst, true);
sqliteのDBもfilesの下に置く形で動きました
mDB_Path = Environment.getExternalStorageDirectory() + "/Android/data/" + mPackageName + "/files";
ただしDBをPCに簡単にコピーすることはできませんでした。エラーになります。
sqliteのDBを参照するアプリをいくつか試したのですがDBのある場所まで行けませんでした。

以上です。

投稿2023/03/14 09:08

yk3125

総合スコア91

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問