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 9 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