mirror of
https://github.com/ankidroid/Anki-Android.git
synced 2024-09-20 20:03:05 +02:00
Merge pull request #3755 from timrae/custom-tabs-min-sdk
Don't use any of the customtabs support library methods if below SDK 16
This commit is contained in:
commit
b65d09cc96
@ -7,12 +7,10 @@ import android.app.PendingIntent;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.graphics.Color;
|
||||
import android.media.AudioManager;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.support.customtabs.CustomTabsIntent;
|
||||
import android.support.design.widget.Snackbar;
|
||||
import android.support.v4.app.DialogFragment;
|
||||
import android.support.v4.app.Fragment;
|
||||
@ -36,9 +34,8 @@ import com.ichi2.anki.dialogs.AsyncDialogFragment;
|
||||
import com.ichi2.anki.dialogs.DialogHandler;
|
||||
import com.ichi2.anki.dialogs.SimpleMessageDialog;
|
||||
import com.ichi2.async.CollectionLoader;
|
||||
import com.ichi2.compat.CompatHelper;
|
||||
import com.ichi2.compat.customtabs.CustomTabActivityHelper;
|
||||
import com.ichi2.compat.customtabs.CustomTabsFallback;
|
||||
import com.ichi2.compat.customtabs.CustomTabsHelper;
|
||||
import com.ichi2.libanki.Collection;
|
||||
import com.ichi2.themes.Themes;
|
||||
|
||||
@ -325,14 +322,11 @@ public class AnkiActivity extends AppCompatActivity implements LoaderManager.Loa
|
||||
}
|
||||
|
||||
protected void openUrl(Uri url) {
|
||||
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder(mCustomTabActivityHelper.getSession());
|
||||
builder.setToolbarColor(getResources().getColor(R.color.theme_primary)).setShowTitle(true);
|
||||
builder.setStartAnimations(this, R.anim.slide_right_in, R.anim.slide_left_out);
|
||||
builder.setExitAnimations(this, R.anim.slide_left_in, R.anim.slide_right_out);
|
||||
builder.setCloseButtonIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_arrow_back_white_24dp));
|
||||
CustomTabsIntent customTabsIntent = builder.build();
|
||||
CustomTabsHelper.addKeepAliveExtra(this, customTabsIntent.intent);
|
||||
CustomTabActivityHelper.openCustomTab(this, customTabsIntent, url, new CustomTabsFallback());
|
||||
CompatHelper.getCompat().openUrl(this, url);
|
||||
}
|
||||
|
||||
public CustomTabActivityHelper getCustomTabActivityHelper() {
|
||||
return mCustomTabActivityHelper;
|
||||
}
|
||||
|
||||
|
||||
|
@ -18,6 +18,7 @@ package com.ichi2.compat;
|
||||
|
||||
import android.content.Context;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.net.Uri;
|
||||
import android.speech.tts.TextToSpeech;
|
||||
import android.view.View;
|
||||
import android.widget.RemoteViews;
|
||||
@ -55,5 +56,6 @@ public interface Compat {
|
||||
void restartActivityInvalidateBackstack(AnkiActivity activity);
|
||||
void setFullScreen(NavigationDrawerActivity activity);
|
||||
void setSelectableBackground(View view);
|
||||
void openUrl(AnkiActivity activity, Uri uri);
|
||||
}
|
||||
|
||||
|
@ -7,6 +7,7 @@ import android.content.Intent;
|
||||
import android.content.res.Resources;
|
||||
import android.content.res.TypedArray;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.net.Uri;
|
||||
import android.speech.tts.TextToSpeech;
|
||||
import android.speech.tts.TextToSpeech.OnUtteranceCompletedListener;
|
||||
import android.view.View;
|
||||
@ -18,6 +19,7 @@ import com.ichi2.anki.DeckPicker;
|
||||
import com.ichi2.anki.NavigationDrawerActivity;
|
||||
import com.ichi2.anki.R;
|
||||
import com.ichi2.anki.ReadText;
|
||||
import com.ichi2.compat.customtabs.CustomTabsFallback;
|
||||
|
||||
import timber.log.Timber;
|
||||
|
||||
@ -95,4 +97,9 @@ public class CompatV10 implements Compat {
|
||||
view.setBackgroundColor(ta.getColor(0, res.getColor(R.color.white)));
|
||||
ta.recycle();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void openUrl(AnkiActivity activity, Uri uri) {
|
||||
new CustomTabsFallback().openUri(activity, uri);
|
||||
}
|
||||
}
|
@ -8,13 +8,20 @@ import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.res.Configuration;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.support.customtabs.CustomTabsIntent;
|
||||
import android.text.Html;
|
||||
import android.util.TypedValue;
|
||||
import android.widget.RemoteViews;
|
||||
|
||||
import com.ichi2.anki.AnkiActivity;
|
||||
import com.ichi2.anki.AnkiDroidApp;
|
||||
import com.ichi2.anki.R;
|
||||
import com.ichi2.compat.customtabs.CustomTabActivityHelper;
|
||||
import com.ichi2.compat.customtabs.CustomTabsFallback;
|
||||
import com.ichi2.compat.customtabs.CustomTabsHelper;
|
||||
|
||||
/** Implementation of {@link Compat} for SDK level 16 */
|
||||
@TargetApi(16)
|
||||
@ -44,7 +51,6 @@ public class CompatV16 extends CompatV15 implements Compat {
|
||||
AppWidgetManager manager = AppWidgetManager.getInstance(context);
|
||||
int[] ids = manager.getAppWidgetIds(new ComponentName(context, cls));
|
||||
for (int id : ids) {
|
||||
AppWidgetProviderInfo providerInfo = manager.getAppWidgetInfo(id);
|
||||
final float scale = context.getResources().getDisplayMetrics().density;
|
||||
Bundle options = manager.getAppWidgetOptions(id);
|
||||
float width, height;
|
||||
@ -70,7 +76,20 @@ public class CompatV16 extends CompatV15 implements Compat {
|
||||
updateViews.setTextViewTextSize(R.id.widget_due, TypedValue.COMPLEX_UNIT_SP, text);
|
||||
updateViews.setTextViewTextSize(R.id.widget_eta, TypedValue.COMPLEX_UNIT_SP, text);
|
||||
updateViews.setViewPadding(R.id.ankidroid_widget_text_layout, horizontal, vertical, horizontal, vertical);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void openUrl(AnkiActivity activity, Uri uri) {
|
||||
CustomTabActivityHelper helper = activity.getCustomTabActivityHelper();
|
||||
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder(helper.getSession());
|
||||
builder.setToolbarColor(activity.getResources().getColor(R.color.theme_primary)).setShowTitle(true);
|
||||
builder.setStartAnimations(activity, R.anim.slide_right_in, R.anim.slide_left_out);
|
||||
builder.setExitAnimations(activity, R.anim.slide_left_in, R.anim.slide_right_out);
|
||||
builder.setCloseButtonIcon(BitmapFactory.decodeResource(activity.getResources(), R.drawable.ic_arrow_back_white_24dp));
|
||||
CustomTabsIntent customTabsIntent = builder.build();
|
||||
CustomTabsHelper.addKeepAliveExtra(activity, customTabsIntent.intent);
|
||||
CustomTabActivityHelper.openCustomTab(activity, customTabsIntent, uri, new CustomTabsFallback());
|
||||
}
|
||||
}
|
@ -24,6 +24,8 @@ import android.support.customtabs.CustomTabsSession;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import timber.log.Timber;
|
||||
|
||||
|
||||
/**
|
||||
* This is a helper class to manage the connection to the Custom Tabs Service.
|
||||
@ -52,6 +54,8 @@ public class CustomTabActivityHelper implements ServiceConnectionCallback {
|
||||
if (packageName == null) {
|
||||
if (fallback != null) {
|
||||
fallback.openUri(activity, uri);
|
||||
} else {
|
||||
Timber.e("A version of Chrome supporting custom tabs was not available, and the fallback was null");
|
||||
}
|
||||
} else {
|
||||
customTabsIntent.intent.setPackage(packageName);
|
||||
|
@ -24,6 +24,8 @@ import android.support.customtabs.CustomTabsService;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
import com.ichi2.compat.CompatHelper;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@ -40,6 +42,7 @@ public class CustomTabsHelper {
|
||||
"android.support.customtabs.extra.KEEP_ALIVE";
|
||||
|
||||
private static String sPackageNameToUse;
|
||||
private static final int MIN_SDK = 16;
|
||||
|
||||
private CustomTabsHelper() {}
|
||||
|
||||
@ -60,6 +63,9 @@ public class CustomTabsHelper {
|
||||
* @return The package name recommended to use for connecting to custom tabs related components.
|
||||
*/
|
||||
public static String getPackageNameToUse(Context context) {
|
||||
if (CompatHelper.getSdkVersion() < MIN_SDK) {
|
||||
return null;
|
||||
}
|
||||
if (sPackageNameToUse != null) return sPackageNameToUse;
|
||||
|
||||
PackageManager pm = context.getPackageManager();
|
||||
|
Loading…
Reference in New Issue
Block a user