From c15f093a1bc4211e85f8d1817c9073e307afe5ac Mon Sep 17 00:00:00 2001 From: Shinokuni Date: Sun, 6 Sep 2020 23:09:59 +0200 Subject: [PATCH] Add an option to open item url in custom tab --- app/build.gradle | 2 +- .../readrops/app/activities/ItemActivity.java | 42 +++++++++++++++---- app/src/main/res/values-fr/strings.xml | 1 + app/src/main/res/values/arrays.xml | 2 + app/src/main/res/values/strings.xml | 1 + app/src/main/res/xml/preferences.xml | 2 +- 6 files changed, 41 insertions(+), 9 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 96c07aa3..0cd879c0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -71,7 +71,7 @@ dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation "androidx.work:work-runtime-ktx:2.4.0" implementation "androidx.fragment:fragment-ktx:1.2.3" - + implementation "androidx.browser:browser:1.2.0" testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test.ext:junit:1.1.1' diff --git a/app/src/main/java/com/readrops/app/activities/ItemActivity.java b/app/src/main/java/com/readrops/app/activities/ItemActivity.java index 86462056..b995d9cc 100644 --- a/app/src/main/java/com/readrops/app/activities/ItemActivity.java +++ b/app/src/main/java/com/readrops/app/activities/ItemActivity.java @@ -22,6 +22,7 @@ import android.webkit.WebView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; +import androidx.browser.customtabs.CustomTabsIntent; import androidx.core.app.ActivityCompat; import androidx.core.app.ShareCompat; import androidx.lifecycle.ViewModelProvider; @@ -199,12 +200,7 @@ public class ItemActivity extends AppCompatActivity { shareArticle(); return true; case R.id.item_open: - int value = Integer.parseInt(SharedPreferencesManager.readString(this, - SharedPreferencesManager.SharedPrefKey.OPEN_ITEMS_IN)); - if (value == 0) - openInNavigator(); - else - openInWebView(); + openUrl(); return true; default: return super.onOptionsItemSelected(item); @@ -217,6 +213,22 @@ public class ItemActivity extends AppCompatActivity { super.onBackPressed(); } + private void openUrl() { + int value = Integer.parseInt(SharedPreferencesManager.readString(this, + SharedPreferencesManager.SharedPrefKey.OPEN_ITEMS_IN)); + switch (value) { + case 0: + openInNavigator(); + break; + case 1: + openInWebView(); + break; + default: + openInCustomTab(); + break; + } + } + private void openInNavigator() { Intent urlIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(itemWithFeed.getItem().getLink())); startActivity(urlIntent); @@ -225,11 +237,27 @@ public class ItemActivity extends AppCompatActivity { private void openInWebView() { Intent intent = new Intent(this, WebViewActivity.class); intent.putExtra(WEB_URL, itemWithFeed.getItem().getLink()); - intent.putExtra(ACTION_BAR_COLOR, itemWithFeed.getColor() != 0 ? itemWithFeed.getColor() : itemWithFeed.getBgColor()); + intent.putExtra(ACTION_BAR_COLOR, itemWithFeed.getBgColor() != 0 ? itemWithFeed.getBgColor() : itemWithFeed.getColor()); startActivity(intent); } + private void openInCustomTab() { + boolean darkTheme = Boolean.parseBoolean(SharedPreferencesManager.readString(this, SharedPreferencesManager.SharedPrefKey.DARK_THEME)); + int color = itemWithFeed.getBgColor() != 0 ? itemWithFeed.getBgColor() : itemWithFeed.getColor(); + + CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder() + .addDefaultShareMenuItem() + .setToolbarColor(color) + .setSecondaryToolbarColor(color) + .setColorScheme(darkTheme ? CustomTabsIntent.COLOR_SCHEME_DARK : CustomTabsIntent.COLOR_SCHEME_LIGHT) + .enableUrlBarHiding() + .setShowTitle(true) + .build(); + + customTabsIntent.launchUrl(this, Uri.parse(itemWithFeed.getItem().getLink())); + } + private void shareArticle() { Intent shareIntent = new Intent(Intent.ACTION_SEND); shareIntent.setType("text/plain"); diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index fe4f52b0..cc89f85b 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -132,5 +132,6 @@ Afficher la légende Votre mot de passe d\'API (Configuration > Profil) Synchroniser + Vue navigateur \ No newline at end of file diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 824cd35c..a603ebf8 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -33,11 +33,13 @@ @string/external_navigator @string/webview + @string/navigator_view 0 1 + 2 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 077eaec1..8021181f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -138,4 +138,5 @@ Back Show caption Synchronize + Navigator view diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 9a14e305..625fc43a 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -16,7 +16,7 @@ android:title="@string/reload_feeds_colors" />