From 677e96daf3bb4718f6e56f0181754182e05d5bd0 Mon Sep 17 00:00:00 2001 From: MRSa Date: Mon, 1 May 2023 00:20:10 +0900 Subject: [PATCH] =?utf8?q?CSV=E5=BD=A2=E5=BC=8F=E3=81=A7=E3=82=A8=E3=82=AF?= =?utf8?q?=E3=82=B9=E3=83=9D=E3=83=BC=E3=83=88=E3=81=99=E3=82=8B=E9=83=A8?= =?utf8?q?=E5=88=86=E3=82=92=E8=BF=BD=E5=8A=A0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../gokigen/memoma/io/MeMoMaDataInOutManager.java | 2 +- .../memoma/io/MeMoMaFileExportCsvProcess.java | 80 +++++++++++++++------ .../memoma/io/MeMoMaFileLoadingProcess.java | 13 ++-- .../gokigen/memoma/io/MeMoMaFileSavingEngine.java | 83 +++------------------- .../gokigen/memoma/io/MeMoMaFileSavingProcess.java | 50 ++++++------- 5 files changed, 91 insertions(+), 137 deletions(-) diff --git a/app/src/main/java/jp/sourceforge/gokigen/memoma/io/MeMoMaDataInOutManager.java b/app/src/main/java/jp/sourceforge/gokigen/memoma/io/MeMoMaDataInOutManager.java index 984af2a..9750c98 100644 --- a/app/src/main/java/jp/sourceforge/gokigen/memoma/io/MeMoMaDataInOutManager.java +++ b/app/src/main/java/jp/sourceforge/gokigen/memoma/io/MeMoMaDataInOutManager.java @@ -245,7 +245,7 @@ public class MeMoMaDataInOutManager implements MeMoMaFileSavingProcess.ISavingSt SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(parent); SharedPreferences.Editor editor = preferences.edit(); editor.putString("MeMoMaInfo", data); - editor.apply(); + editor.apply(); // 選択したアイテムをロードする! loadFileWithName(data); diff --git a/app/src/main/java/jp/sourceforge/gokigen/memoma/io/MeMoMaFileExportCsvProcess.java b/app/src/main/java/jp/sourceforge/gokigen/memoma/io/MeMoMaFileExportCsvProcess.java index 47fa5ff..181377a 100644 --- a/app/src/main/java/jp/sourceforge/gokigen/memoma/io/MeMoMaFileExportCsvProcess.java +++ b/app/src/main/java/jp/sourceforge/gokigen/memoma/io/MeMoMaFileExportCsvProcess.java @@ -1,42 +1,42 @@ package jp.sourceforge.gokigen.memoma.io; +import static jp.sourceforge.gokigen.memoma.Main.APP_NAMESPACE; + import java.io.File; -import java.io.FileWriter; +import java.io.OutputStream; +import java.io.OutputStreamWriter; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Enumeration; import java.util.Locale; import android.app.ProgressDialog; +import android.content.ContentResolver; +import android.content.ContentValues; import android.content.Context; import android.graphics.RectF; +import android.net.Uri; import android.os.AsyncTask; +import android.os.Build; +import android.os.Environment; +import android.provider.MediaStore; import android.util.Log; -import jp.sourceforge.gokigen.memoma.Main; import jp.sourceforge.gokigen.memoma.R; import jp.sourceforge.gokigen.memoma.holders.MeMoMaObjectHolder; import jp.sourceforge.gokigen.memoma.holders.PositionObject; /** * データをファイルに保存するとき用 アクセスラッパ (非同期処理を実行) - * - * AsyncTask - * MeMoMaObjectHolder : 実行時に渡すクラス(Param) - * Integer : 途中経過を伝えるクラス(Progress) - * String : 処理結果を伝えるクラス(Result) - * - * @author MRSa - * */ public class MeMoMaFileExportCsvProcess extends AsyncTask { private final String TAG = toString(); private final Context context; - private IResultReceiver receiver; + private final IResultReceiver receiver; private String exportedFileName = null; - private ProgressDialog savingDialog; + private final ProgressDialog savingDialog; /** * コンストラクタ @@ -54,12 +54,7 @@ public class MeMoMaFileExportCsvProcess extends AsyncTask= Build.VERSION_CODES.Q) + { + values.put(MediaStore.Downloads.RELATIVE_PATH, "Download/" + APP_NAMESPACE); + values.put(MediaStore.Downloads.IS_PENDING, true); + extStorageUri = MediaStore.Downloads.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY); + } + else + { + File path = new File(outputDir); + values.put(MediaStore.Downloads.DATA, path.getAbsolutePath() + File.separator + exportedFileName); + extStorageUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; + } + Log.v(TAG, "---------- " + exportedFileName + " " + values); + + Uri documentUri = resolver.insert(extStorageUri, values); + + if (documentUri == null) + { + resultMessage = "documentUri is NULL."; + return (resultMessage); + } + + OutputStream outputStream = resolver.openOutputStream(documentUri, "wa"); + OutputStreamWriter writer = new OutputStreamWriter(outputStream); // データのタイトルを出力 String str = "; label,detail,userChecked,shape,style,centerX,centerY,width,height,;!<_$ (';!<_$' is a record Separator)\r\n"; @@ -122,10 +150,16 @@ public class MeMoMaFileExportCsvProcess extends AsyncTask= Build.VERSION_CODES.Q) + { + values.put(MediaStore.Downloads.IS_PENDING, false); + resolver.update(documentUri, values, null, null); + } } catch (Exception e) { - resultMessage = " ERR>" + e.toString(); + resultMessage = " ERR " + e.getMessage(); Log.v(TAG, resultMessage); e.printStackTrace(); } diff --git a/app/src/main/java/jp/sourceforge/gokigen/memoma/io/MeMoMaFileLoadingProcess.java b/app/src/main/java/jp/sourceforge/gokigen/memoma/io/MeMoMaFileLoadingProcess.java index bb9bc0f..f8cdf86 100644 --- a/app/src/main/java/jp/sourceforge/gokigen/memoma/io/MeMoMaFileLoadingProcess.java +++ b/app/src/main/java/jp/sourceforge/gokigen/memoma/io/MeMoMaFileLoadingProcess.java @@ -21,7 +21,6 @@ import jp.sourceforge.gokigen.memoma.holders.PositionObject; /** * データをファイルに保存するとき用 アクセスラッパ (非同期処理を実行) - * * AsyncTask * MeMoMaObjectHolder : 実行時に渡すクラス(Param) * Integer : 途中経過を伝えるクラス(Progress) @@ -34,7 +33,7 @@ public class MeMoMaFileLoadingProcess extends AsyncTask