OSDN Git Service

ファイルピッカー部分の KitKatよりも下のバージョンで実施できるようにした。
authorMRSa <mrsa@myad.jp>
Thu, 4 May 2023 06:01:53 +0000 (15:01 +0900)
committerMRSa <mrsa@myad.jp>
Thu, 4 May 2023 06:01:53 +0000 (15:01 +0900)
app/src/main/java/jp/sourceforge/gokigen/memoma/MeMoMaListener.kt
app/src/main/java/jp/sourceforge/gokigen/memoma/extension/ExtensionActivityListener.java
app/src/main/java/jp/sourceforge/gokigen/memoma/io/ImageLoader.java
app/src/main/res/values-ja/strings.xml
app/src/main/res/values/strings.xml

index 9530c64..b40e3db 100644 (file)
@@ -209,7 +209,7 @@ class MeMoMaListener internal constructor(private val parent: AppCompatActivity,
                 {
                     try
                     {
-                        if (Build.VERSION.SDK_INT >= 19)
+                        if (Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT)
                         {
                             parent.contentResolver.takePersistableUriPermission(
                                 backgroundUri,
@@ -529,7 +529,7 @@ class MeMoMaListener internal constructor(private val parent: AppCompatActivity,
     private fun insertPicture()
     {
         val intent: Intent
-        if (Build.VERSION.SDK_INT >= 19)
+        if (Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT)
         {
             intent = Intent(Intent.ACTION_OPEN_DOCUMENT)
             intent.addCategory(Intent.CATEGORY_OPENABLE)
index e6fcca7..ad8fbda 100644 (file)
@@ -398,13 +398,13 @@ public class ExtensionActivityListener  implements OnClickListener, MeMoMaFileLo
                 result = true;
             }
             case MENU_ID_IMPORT -> {
-                // データのインポート
-                importObjectFromCsv();
+                // データのインポート(CSV形式)
+                callPickImportObject(PICK_CSV_FILE);
                 result = true;
             }
             case MENU_ID_IMPORT_XML -> {
                 // データのインポート(XML形式)
-                importObjectFromXml();
+                callPickImportObject(PICK_XML_FILE);
                 result = true;
             }
             case MENU_ID_DELETE -> {
@@ -418,40 +418,6 @@ public class ExtensionActivityListener  implements OnClickListener, MeMoMaFileLo
     }
 
     /**
-     *   XML形式でデータをインポートする
-     */
-    private void importObjectFromXml()
-    {
-        try
-        {
-            // ファイル選択のダイアログを取得する
-            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT)
-            {
-                Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
-                intent.addCategory(Intent.CATEGORY_OPENABLE);
-                intent.setType("text/*");
-                intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
-                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
-                {
-                    String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getPath() + "/" + APP_NAMESPACE + "/";
-                    intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, path);
-                }
-                parent.startActivityForResult(intent, PICK_XML_FILE);
-            }
-            else
-            {
-                // 旧バージョンの Android での処理... (File Picker ってあったっけ?)
-
-
-            }
-        }
-        catch (Exception e)
-        {
-            e.printStackTrace();
-        }
-    }
-
-    /**
      *   データを削除する
      */
     private void deleteContent()
@@ -493,31 +459,38 @@ public class ExtensionActivityListener  implements OnClickListener, MeMoMaFileLo
         }
     }
 
-
     /**
-     *   CSV形式でデータをインポートする
+     *   データをインポートする(Intentを呼び出す)
      */
-    private void importObjectFromCsv()
+    private void callPickImportObject(int code)
     {
-        // ファイル選択のダイアログを取得する
-        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT)
+        try
         {
-            Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
-            intent.addCategory(Intent.CATEGORY_OPENABLE);
+            Intent intent;
+            // ファイル選択のダイアログを取得する
+            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT)
+            {
+                intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
+                intent.addCategory(Intent.CATEGORY_OPENABLE);
+                intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+            }
+            else
+            {
+                intent = new Intent(Intent.ACTION_GET_CONTENT);
+            }
             intent.setType("text/*");
-            intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
             if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
             {
                 String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getPath() + "/" + APP_NAMESPACE + "/";
                 intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, path);
             }
-            parent.startActivityForResult(intent, PICK_CSV_FILE);
+            parent.startActivityForResult(intent, code);
         }
-        else
+        catch (Exception e)
         {
-            // 旧バージョンの Android での処理... (File Picker ってあったっけ?)
-
-
+            String message = " " + parent.getString(R.string.intent_call_error) + " " + e.getMessage() + " ID:" + code;
+            Toast.makeText(parent, message,Toast.LENGTH_SHORT).show();
+            e.printStackTrace();
         }
     }
 
index f219465..ea10296 100644 (file)
@@ -49,7 +49,7 @@ public class ImageLoader
         InputStream input = null; 
         try
         {
-            if (Build.VERSION.SDK_INT >= 19)
+            if (Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT)
             {
                 context.getContentResolver().takePersistableUriPermission(uri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
             }
index 3e070cc..beab52c 100644 (file)
@@ -81,4 +81,5 @@
     <string name="import_xml_information">XMLファイルから取り込みしたデータは、メイン画面で改めて選択をお願いします。</string>
     <string name="exported_picture_not_shared">画像を出力しましたが、共有はできません。</string>
     <string name="exported_data_not_shared">CSVファイルを出力しましたが、共有はできません。</string>
+    <string name="intent_call_error">ファイル選択の呼び出しに失敗しました。</string>
 </resources>
index 65b1f3a..3ba2976 100644 (file)
@@ -81,4 +81,5 @@
     <string name="import_xml_information">Please select again the data imported from the XML file on the main screen.</string>
     <string name="exported_picture_not_shared">The picture is exported, but it cannot share it.</string>
     <string name="exported_data_not_shared">The file is exported, but it cannot share it.</string>
+    <string name="intent_call_error">The file picker call failed.</string>
 </resources>