diff options
-rw-r--r-- | News-Android-App/build.gradle | 3 | ||||
-rw-r--r-- | News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewFeedActivity.java | 49 | ||||
-rw-r--r-- | News-Android-App/src/main/res/values/strings.xml | 2 |
3 files changed, 35 insertions, 19 deletions
diff --git a/News-Android-App/build.gradle b/News-Android-App/build.gradle index a20163a9..e3084dbe 100644 --- a/News-Android-App/build.gradle +++ b/News-Android-App/build.gradle @@ -120,7 +120,6 @@ repositories { jcenter() maven { url "https://jitpack.io" } maven { url 'https://guardian.github.io/maven/repo-releases' } //needed for com.gu:option:1.3 in Android-DirectoryChooser - maven { url "https://dl.bintray.com/lukaville/maven" } //Needed for com.nbsp:library:1.8 in Material File Picker } final DAGGER_VERSION = '2.33' @@ -186,8 +185,6 @@ dependencies { implementation "com.squareup.okhttp3:okhttp:${OKHTTP_VERSION}" implementation "com.squareup.okhttp3:logging-interceptor:${OKHTTP_VERSION}" - implementation 'com.nbsp:library:1.8' // MaterialFilePicker - implementation 'androidx.multidex:multidex:2.0.1' coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5' diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewFeedActivity.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewFeedActivity.java index 2b9d4848..7f082b30 100644 --- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewFeedActivity.java +++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewFeedActivity.java @@ -4,9 +4,11 @@ import android.Manifest; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.app.ProgressDialog; +import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; +import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; import android.os.Environment; @@ -25,9 +27,6 @@ import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; -import com.nbsp.materialfilepicker.MaterialFilePicker; -import com.nbsp.materialfilepicker.ui.FilePickerActivity; - import org.json.JSONException; import org.json.JSONObject; import org.xmlpull.v1.XmlPullParser; @@ -48,7 +47,6 @@ import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Objects; import javax.inject.Inject; @@ -164,13 +162,9 @@ public class NewFeedActivity extends AppCompatActivity { } private void openFilePicker() { - new MaterialFilePicker() - .withActivity(this) - .withRequestCode(REQUEST_CODE_OPML_IMPORT) - //.withFilter(Pattern.compile(".*\\.opml$")) // Filtering files and directories by file name using regexp - .withFilterDirectories(true) // Set directories filterable (false by default) - .withHiddenFiles(true) // Show hidden files and folders - .start(); + startActivityForResult(new Intent(Intent.ACTION_GET_CONTENT) + .addCategory(Intent.CATEGORY_OPENABLE) + .setType("text/*"), REQUEST_CODE_OPML_IMPORT); } public void exportOpml() { @@ -219,9 +213,32 @@ public class NewFeedActivity extends AppCompatActivity { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE_OPML_IMPORT && resultCode == RESULT_OK) { - String filePath = data.getStringExtra(FilePickerActivity.RESULT_FILE_PATH); - - AsyncTaskHelper.StartAsyncTask(new ImportOpmlSubscriptionsTask(filePath, NewFeedActivity.this)); + final Uri importUri = data.getData(); + + switch (importUri.getScheme()) { + case ContentResolver.SCHEME_CONTENT: + case ContentResolver.SCHEME_FILE: + new Thread(() -> { + try { + final File cacheFile = new File(getCacheDir().getAbsolutePath() + "/import.opml"); + final FileOutputStream outputStream = new FileOutputStream(cacheFile); + byte[] buffer = new byte[4096]; + final InputStream inputStream = getContentResolver().openInputStream(importUri); + + int count; + while ((count = inputStream.read(buffer)) > 0) { + outputStream.write(buffer, 0, count); + } + runOnUiThread(() -> AsyncTaskHelper.StartAsyncTask(new ImportOpmlSubscriptionsTask(cacheFile.getAbsolutePath(), NewFeedActivity.this))); + } catch (IOException e) { + e.printStackTrace(); + Toast.makeText(this, e.getLocalizedMessage(), Toast.LENGTH_LONG).show(); + } + }).start(); + break; + default: + Toast.makeText(this, "Unknown URI scheme: " + importUri.getScheme(), Toast.LENGTH_LONG).show(); + } } } @@ -240,8 +257,8 @@ public class NewFeedActivity extends AppCompatActivity { @Override protected void onPreExecute() { pd = new ProgressDialog(mContext); - pd.setTitle("Parsing OMPL..."); - pd.setMessage("Please wait."); + pd.setTitle(getString(R.string.parsing_opml)); + pd.setMessage(getString(R.string.please_wait)); pd.setCancelable(false); pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); pd.show(); diff --git a/News-Android-App/src/main/res/values/strings.xml b/News-Android-App/src/main/res/values/strings.xml index 467050e2..5a34420b 100644 --- a/News-Android-App/src/main/res/values/strings.xml +++ b/News-Android-App/src/main/res/values/strings.xml @@ -421,6 +421,8 @@ <string name="array_sync_interval_hour_12">12 Hours</string> <string name="array_sync_interval_hour_24">24 Hours</string> <string name="switch_account">Switch account</string> + <string name="parsing_opml">Parsing OPML…</string> + <string name="please_wait">Please wait.</string> <string-array name="array_sync_interval" translatable="false"> <item>@string/array_sync_interval_min_0</item> |