From 287a1883615885e3d604ff70dbaf5e6612002bf1 Mon Sep 17 00:00:00 2001 From: tom79 Date: Sat, 23 Feb 2019 14:39:51 +0100 Subject: [PATCH] Some fixes --- .../mastodon/activities/BaseMainActivity.java | 2 +- .../mastodon/activities/LoginActivity.java | 2 +- .../gouv/etalab/mastodon/helper/Helper.java | 45 ++++++++++++++++++- app/src/main/res/menu/main_login.xml | 4 ++ 4 files changed, 49 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/BaseMainActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/BaseMainActivity.java index b0e23a48c..a7655f9b2 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/BaseMainActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/BaseMainActivity.java @@ -2340,7 +2340,7 @@ public abstract class BaseMainActivity extends BaseActivity return; } ExcelToSQLite excelToSQLite = new ExcelToSQLite(getApplicationContext(), DB_NAME, true); - String filename = SettingsFragment.getPath(getApplicationContext(), data.getData()); + String filename = Helper.getFilePathFromURI(getApplicationContext(), data.getData()); assert filename != null; excelToSQLite.importFromFile(filename, new ExcelToSQLite.ImportListener() { @Override diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/LoginActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/LoginActivity.java index d4b47fb28..7425e1965 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/LoginActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/LoginActivity.java @@ -822,7 +822,7 @@ public class LoginActivity extends BaseActivity { return; } ExcelToSQLite excelToSQLite = new ExcelToSQLite(getApplicationContext(), DB_NAME, true); - String filename = SettingsFragment.getPath(getApplicationContext(), data.getData()); + String filename = Helper.getFilePathFromURI(getApplicationContext(), data.getData()); assert filename != null; excelToSQLite.importFromFile(filename, new ExcelToSQLite.ImportListener() { @Override diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java index b4851cccc..999878f53 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java @@ -76,6 +76,7 @@ import android.text.Html; import android.text.SpannableString; import android.text.Spanned; import android.text.TextPaint; +import android.text.TextUtils; import android.text.style.ClickableSpan; import android.text.style.URLSpan; import android.util.DisplayMetrics; @@ -180,6 +181,7 @@ import fr.gouv.etalab.mastodon.sqlite.SearchDAO; import fr.gouv.etalab.mastodon.sqlite.Sqlite; import static android.content.Context.DOWNLOAD_SERVICE; +import static com.koushikdutta.async.util.StreamUtility.copyStream; import static fr.gouv.etalab.mastodon.activities.BaseMainActivity.filters; @@ -560,8 +562,10 @@ public class Helper { String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null); String instance = sharedpreferences.getString(Helper.PREF_INSTANCE, Helper.getLiveInstance(activity)); Account account = new AccountDAO(activity, db).getUniqAccount(userId, instance); - account.setToken("null"); - new AccountDAO(activity, db).updateAccount(account); + if( account != null) { + account.setToken("null"); + new AccountDAO(activity, db).updateAccount(account); + } Account newAccount = new AccountDAO(activity, db).getLastUsedAccount(); SharedPreferences.Editor editor = sharedpreferences.edit(); if( newAccount == null){ @@ -3687,4 +3691,41 @@ public class Helper { .show(); } } + + + + public static String getFilePathFromURI(Context context, Uri contentUri) { + //copy file and send new file path + String fileName = getFileName(contentUri); + if (!TextUtils.isEmpty(fileName)) { + File copyFile = new File(context.getCacheDir() + File.separator + fileName); + copy(context, contentUri, copyFile); + return copyFile.getAbsolutePath(); + } + return null; + } + + public static String getFileName(Uri uri) { + if (uri == null) return null; + String fileName = null; + String path = uri.getPath(); + int cut = path.lastIndexOf('/'); + if (cut != -1) { + fileName = path.substring(cut + 1); + } + return fileName; + } + + public static void copy(Context context, Uri srcUri, File dstFile) { + try { + InputStream inputStream = context.getContentResolver().openInputStream(srcUri); + if (inputStream == null) return; + OutputStream outputStream = new FileOutputStream(dstFile); + copyStream(inputStream, outputStream); + inputStream.close(); + outputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } } diff --git a/app/src/main/res/menu/main_login.xml b/app/src/main/res/menu/main_login.xml index 3d6ef5572..8309f5ea2 100644 --- a/app/src/main/res/menu/main_login.xml +++ b/app/src/main/res/menu/main_login.xml @@ -17,6 +17,10 @@ android:title="@string/custom_tabs" app:actionViewClass="android.widget.CheckBox" android:checkable="true"/> +