Add chrome custom tab support

Drop api 14 support, minimum is now 15 (still Android 4.0, required by the custom tab lib)
Update dependencies
multisite
Floens 10 years ago
parent a8fa5fd869
commit e9f812ee58
  1. 24
      Clover/app/build.gradle
  2. 2
      Clover/app/src/main/java/org/floens/chan/core/settings/ChanSettings.java
  3. 3
      Clover/app/src/main/java/org/floens/chan/ui/controller/BrowseController.java
  4. 4
      Clover/app/src/main/java/org/floens/chan/ui/controller/ImageViewerController.java
  5. 3
      Clover/app/src/main/java/org/floens/chan/ui/controller/ViewThreadController.java
  6. 4
      Clover/app/src/main/java/org/floens/chan/ui/layout/ThreadLayout.java
  7. 10
      Clover/app/src/main/java/org/floens/chan/utils/AndroidUtils.java
  8. 2
      Clover/build.gradle
  9. 4
      Clover/gradle/wrapper/gradle-wrapper.properties

@ -2,11 +2,11 @@ apply plugin: 'com.android.application'
android { android {
compileSdkVersion 23 compileSdkVersion 23
buildToolsVersion '23.0.2' buildToolsVersion '23.0.3'
defaultConfig { defaultConfig {
applicationId "org.floens.chan" applicationId "org.floens.chan"
minSdkVersion 14 minSdkVersion 15
targetSdkVersion 23 targetSdkVersion 23
versionName "v2.1.3" versionName "v2.1.3"
@ -72,16 +72,9 @@ android {
productFlavors { productFlavors {
normal { normal {
applicationId = "org.floens.chan" applicationId = "org.floens.chan"
// resValue "string", "app_name", "Clover F-Droid"
resValue "string", "app_name", "Clover" resValue "string", "app_name", "Clover"
resValue "string", "app_flavor_name", "" resValue "string", "app_flavor_name", ""
} }
play {
applicationId = "org.floens.clover"
resValue "string", "app_name", "Clover"
resValue "string", "app_flavor_name", "Google Play"
}
} }
sourceSets { sourceSets {
@ -90,12 +83,13 @@ android {
} }
dependencies { dependencies {
compile 'com.android.support:support-v13:23.1.1' compile 'com.android.support:support-v13:23.2.1'
compile 'com.android.support:appcompat-v7:23.1.1' compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.support:recyclerview-v7:23.1.1' compile 'com.android.support:recyclerview-v7:23.2.1'
compile 'com.android.support:cardview-v7:23.1.1' compile 'com.android.support:cardview-v7:23.2.1'
compile 'com.android.support:support-annotations:23.1.1' compile 'com.android.support:support-annotations:23.2.1'
compile 'com.android.support:design:23.1.1' compile 'com.android.support:design:23.2.1'
compile 'com.android.support:customtabs:23.2.1'
compile 'org.jsoup:jsoup:1.8.3' compile 'org.jsoup:jsoup:1.8.3'
compile 'com.j256.ormlite:ormlite-core:4.48' compile 'com.j256.ormlite:ormlite-core:4.48'

@ -130,7 +130,7 @@ public class ChanSettings {
fontSize = new StringSetting(p, "preference_font", tablet ? "16" : "14"); fontSize = new StringSetting(p, "preference_font", tablet ? "16" : "14");
fontCondensed = new BooleanSetting(p, "preference_font_condensed", false); fontCondensed = new BooleanSetting(p, "preference_font_condensed", false);
openLinkConfirmation = new BooleanSetting(p, "preference_open_link_confirmation", true); openLinkConfirmation = new BooleanSetting(p, "preference_open_link_confirmation", false);
autoRefreshThread = new BooleanSetting(p, "preference_auto_refresh_thread", true); autoRefreshThread = new BooleanSetting(p, "preference_auto_refresh_thread", true);
// imageAutoLoad = new BooleanSetting(p, "preference_image_auto_load", true); // imageAutoLoad = new BooleanSetting(p, "preference_image_auto_load", true);
imageAutoLoadNetwork = new StringSetting(p, "preference_image_auto_load_network", MediaAutoLoadMode.WIFI.name); imageAutoLoadNetwork = new StringSetting(p, "preference_image_auto_load_network", MediaAutoLoadMode.WIFI.name);

@ -18,6 +18,7 @@
package org.floens.chan.ui.controller; package org.floens.chan.ui.controller;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
@ -135,7 +136,7 @@ public class BrowseController extends ThreadController implements ToolbarMenuIte
if (id == SHARE_ID) { if (id == SHARE_ID) {
AndroidUtils.shareLink(link); AndroidUtils.shareLink(link);
} else { } else {
AndroidUtils.openLink(link); AndroidUtils.openLinkInBrowser((Activity) context, link);
} }
break; break;

@ -166,7 +166,7 @@ public class ImageViewerController extends Controller implements ImageViewerPres
saveShare(true, postImage); saveShare(true, postImage);
break; break;
case OPEN_BROWSER_ID: case OPEN_BROWSER_ID:
AndroidUtils.openLink(postImage.imageUrl); AndroidUtils.openLinkInBrowser((Activity) context, postImage.imageUrl);
break; break;
case SEARCH_ID: case SEARCH_ID:
List<FloatingMenuItem> items = new ArrayList<>(); List<FloatingMenuItem> items = new ArrayList<>();
@ -179,7 +179,7 @@ public class ImageViewerController extends Controller implements ImageViewerPres
public void onFloatingMenuItemClicked(FloatingMenu menu, FloatingMenuItem item) { public void onFloatingMenuItemClicked(FloatingMenu menu, FloatingMenuItem item) {
for (ImageSearch imageSearch : ImageSearch.engines) { for (ImageSearch imageSearch : ImageSearch.engines) {
if (((Integer) item.getId()) == imageSearch.getId()) { if (((Integer) item.getId()) == imageSearch.getId()) {
AndroidUtils.openLink(imageSearch.getUrl(presenter.getCurrentPostImage().imageUrl)); AndroidUtils.openLinkInBrowser((Activity) context, imageSearch.getUrl(presenter.getCurrentPostImage().imageUrl));
break; break;
} }
} }

@ -17,6 +17,7 @@
*/ */
package org.floens.chan.ui.controller; package org.floens.chan.ui.controller;
import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.support.v7.app.AlertDialog; import android.support.v7.app.AlertDialog;
@ -198,7 +199,7 @@ public class ViewThreadController extends ThreadController implements ThreadLayo
if (id == SHARE_ID) { if (id == SHARE_ID) {
AndroidUtils.shareLink(link); AndroidUtils.shareLink(link);
} else { } else {
AndroidUtils.openLink(link); AndroidUtils.openLinkInBrowser((Activity) context, link);
} }
break; break;

@ -281,14 +281,14 @@ public class ThreadLayout extends CoordinatorLayout implements ThreadPresenter.T
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
AndroidUtils.openLink(link); AndroidUtils.openLinkInBrowser((Activity) getContext(), link);
} }
}) })
.setTitle(R.string.open_link_confirmation) .setTitle(R.string.open_link_confirmation)
.setMessage(link) .setMessage(link)
.show(); .show();
} else { } else {
AndroidUtils.openLink(link); AndroidUtils.openLinkInBrowser((Activity) getContext(), link);
} }
} }

@ -39,6 +39,7 @@ import android.os.Build;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import android.support.customtabs.CustomTabsIntent;
import android.support.design.widget.Snackbar; import android.support.design.widget.Snackbar;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@ -56,6 +57,8 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import static org.floens.chan.ui.theme.ThemeHelper.theme;
public class AndroidUtils { public class AndroidUtils {
private static final String TAG = "AndroidUtils"; private static final String TAG = "AndroidUtils";
@ -146,6 +149,13 @@ public class AndroidUtils {
} }
} }
public static void openLinkInBrowser(Activity activity, String link) {
CustomTabsIntent intent = new CustomTabsIntent.Builder()
.setToolbarColor(theme().primaryColor.color)
.build();
intent.launchUrl(activity, Uri.parse(link));
}
public static void shareLink(String link) { public static void shareLink(String link) {
Intent intent = new Intent(Intent.ACTION_SEND); Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain"); intent.setType("text/plain");

@ -4,7 +4,7 @@ buildscript {
mavenCentral() mavenCentral()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:1.3.0' classpath 'com.android.tools.build:gradle:2.1.0-alpha5'
} }
} }

@ -1,6 +1,6 @@
#Mon Oct 26 15:16:34 CET 2015 #Tue Feb 23 22:00:42 CET 2016
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip

Loading…
Cancel
Save