From 900c83c363b13fb52519aee368d0932efc3e95c7 Mon Sep 17 00:00:00 2001 From: Mariotaku Lee Date: Mon, 28 Mar 2016 13:35:05 +0800 Subject: [PATCH] fixed several crashes --- .../v7/app/AppCompatDelegateAccessor.java | 41 ------------------ .../support/v7/app/AppCompatUtils.java | 42 ------------------- .../SupportActionModeWrapperAccessor.java | 18 -------- .../support/v7/widget/ViewHolderAccessor.java | 36 ---------------- .../twidere/activity/BaseActivity.java | 11 +++-- .../twidere/activity/ComposeActivity.java | 6 ++- .../twidere/activity/HomeActivity.java | 5 --- .../preference/ClearCachePreference.java | 15 ++++--- .../mariotaku/twidere/util/ThemeUtils.java | 13 +----- .../org/mariotaku/twidere/util/Utils.java | 10 +++-- 10 files changed, 31 insertions(+), 166 deletions(-) delete mode 100644 twidere/src/main/java/android/support/v7/app/AppCompatDelegateAccessor.java delete mode 100644 twidere/src/main/java/android/support/v7/app/AppCompatUtils.java delete mode 100644 twidere/src/main/java/android/support/v7/view/SupportActionModeWrapperAccessor.java delete mode 100644 twidere/src/main/java/android/support/v7/widget/ViewHolderAccessor.java diff --git a/twidere/src/main/java/android/support/v7/app/AppCompatDelegateAccessor.java b/twidere/src/main/java/android/support/v7/app/AppCompatDelegateAccessor.java deleted file mode 100644 index 20786f88d..000000000 --- a/twidere/src/main/java/android/support/v7/app/AppCompatDelegateAccessor.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Twidere - Twitter client for Android - * - * Copyright (C) 2012-2015 Mariotaku Lee - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package android.support.v7.app; - -import android.support.annotation.Nullable; - -/** - * Created by mariotaku on 15/4/27. - */ -public class AppCompatDelegateAccessor { - - @Nullable - public static ActionBar peekActionBar(@Nullable AppCompatDelegate delegate) { - if (delegate instanceof AppCompatDelegateImplBase) - return ((AppCompatDelegateImplBase) delegate).peekSupportActionBar(); - return null; - } - - public static boolean isFloating(AppCompatDelegate delegate) { - if (delegate instanceof AppCompatDelegateImplBase) - return ((AppCompatDelegateImplBase) delegate).mIsFloating; - return false; - } -} diff --git a/twidere/src/main/java/android/support/v7/app/AppCompatUtils.java b/twidere/src/main/java/android/support/v7/app/AppCompatUtils.java deleted file mode 100644 index 5e2da73f3..000000000 --- a/twidere/src/main/java/android/support/v7/app/AppCompatUtils.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Twidere - Twitter client for Android - * - * Copyright (C) 2012-2015 Mariotaku Lee - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package android.support.v7.app; - -import android.support.v7.widget.DecorToolbar; -import android.support.v7.widget.Toolbar; - -import org.mariotaku.twidere.util.Utils; - -/** - * Created by mariotaku on 15/10/12. - */ -public class AppCompatUtils { - - public static Toolbar findToolbarForActionBar(ActionBar actionBar) { - if (actionBar instanceof ToolbarActionBar) { - final Object decorToolbar = Utils.findFieldOfTypes(actionBar, ToolbarActionBar.class, DecorToolbar.class); - if (decorToolbar instanceof DecorToolbar) { - return (Toolbar) ((DecorToolbar) decorToolbar).getViewGroup(); - } - } - return null; - } - -} diff --git a/twidere/src/main/java/android/support/v7/view/SupportActionModeWrapperAccessor.java b/twidere/src/main/java/android/support/v7/view/SupportActionModeWrapperAccessor.java deleted file mode 100644 index 4f724aa09..000000000 --- a/twidere/src/main/java/android/support/v7/view/SupportActionModeWrapperAccessor.java +++ /dev/null @@ -1,18 +0,0 @@ -package android.support.v7.view; - -import android.support.annotation.Nullable; - -/** - * Created by mariotaku on 16/3/1. - */ -public class SupportActionModeWrapperAccessor { - - @Nullable - public static android.support.v7.view.ActionMode getWrappedObject(android.view.ActionMode mode) { - if (mode instanceof SupportActionModeWrapper) { - return ((SupportActionModeWrapper) mode).mWrappedObject; - } - return null; - } - -} diff --git a/twidere/src/main/java/android/support/v7/widget/ViewHolderAccessor.java b/twidere/src/main/java/android/support/v7/widget/ViewHolderAccessor.java deleted file mode 100644 index 64fa2000f..000000000 --- a/twidere/src/main/java/android/support/v7/widget/ViewHolderAccessor.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Twidere - Twitter client for Android - * - * Copyright (C) 2012-2014 Mariotaku Lee - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package android.support.v7.widget; - -import android.support.v7.widget.RecyclerView.ViewHolder; - -/** - * Created by mariotaku on 14/12/6. - */ -public class ViewHolderAccessor { - - public static boolean isRemoved(ViewHolder holder) { - return holder.isRemoved(); - } - - public static boolean isUpdated(ViewHolder holder) { - return holder.isUpdated(); - } -} diff --git a/twidere/src/main/java/org/mariotaku/twidere/activity/BaseActivity.java b/twidere/src/main/java/org/mariotaku/twidere/activity/BaseActivity.java index 539ac5e0f..90b3e738c 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/activity/BaseActivity.java +++ b/twidere/src/main/java/org/mariotaku/twidere/activity/BaseActivity.java @@ -277,10 +277,15 @@ public class BaseActivity extends ATEActivity implements Constants, IExtendedAct mCurrentThemeBackgroundAlpha = getThemeBackgroundAlpha(); mCurrentThemeBackgroundOption = getThemeBackgroundOption(); super.onApplyThemeResource(theme, resId, first); + } + + @Override + public void onAttachedToWindow() { + super.onAttachedToWindow(); final Window window = getWindow(); - if (shouldApplyWindowBackground()) { - ThemeUtils.applyWindowBackground(this, window, mCurrentThemeBackgroundOption, - mCurrentThemeBackgroundAlpha); + if (window != null && shouldApplyWindowBackground()) { + ThemeUtils.applyWindowBackground(this, window, getThemeBackgroundOption(), + getThemeBackgroundAlpha()); } } diff --git a/twidere/src/main/java/org/mariotaku/twidere/activity/ComposeActivity.java b/twidere/src/main/java/org/mariotaku/twidere/activity/ComposeActivity.java index fc5f21f15..cbab17368 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/activity/ComposeActivity.java +++ b/twidere/src/main/java/org/mariotaku/twidere/activity/ComposeActivity.java @@ -1398,7 +1398,11 @@ public class ComposeActivity extends BaseActivity implements OnMenuItemClickList private void requestOrUpdateLocation() { if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { - startLocationUpdateIfEnabled(); + try { + startLocationUpdateIfEnabled(); + } catch (SecurityException e) { + Toast.makeText(this, R.string.cannot_get_location, Toast.LENGTH_SHORT).show(); + } } else { final String[] permissions = {Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION}; diff --git a/twidere/src/main/java/org/mariotaku/twidere/activity/HomeActivity.java b/twidere/src/main/java/org/mariotaku/twidere/activity/HomeActivity.java index d1714a070..0e74e4c1f 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/activity/HomeActivity.java +++ b/twidere/src/main/java/org/mariotaku/twidere/activity/HomeActivity.java @@ -60,7 +60,6 @@ import android.view.View.OnClickListener; import android.view.View.OnLongClickListener; import android.view.ViewGroup; import android.view.ViewGroup.MarginLayoutParams; -import android.view.Window; import android.widget.ImageButton; import com.squareup.otto.Subscribe; @@ -861,10 +860,6 @@ public class HomeActivity extends BaseActivity implements OnClickListener, OnPag mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow_start, GravityCompat.START); mDrawerLayout.addDrawerListener(mDrawerToggle); mDrawerLayout.addDrawerListener(this); - final Window window = getWindow(); - ThemeUtils.applyWindowBackground(this, mHomeContent, - getThemeBackgroundOption(), getCurrentThemeBackgroundAlpha()); - window.setBackgroundDrawable(new EmptyDrawable()); } private void showDataProfilingRequest() { diff --git a/twidere/src/main/java/org/mariotaku/twidere/preference/ClearCachePreference.java b/twidere/src/main/java/org/mariotaku/twidere/preference/ClearCachePreference.java index 5efafa66b..924c3a540 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/preference/ClearCachePreference.java +++ b/twidere/src/main/java/org/mariotaku/twidere/preference/ClearCachePreference.java @@ -26,7 +26,6 @@ import android.util.Log; import org.mariotaku.twidere.R; import java.io.File; -import java.io.FileFilter; public class ClearCachePreference extends AsyncTaskPreference { @@ -48,14 +47,20 @@ public class ClearCachePreference extends AsyncTaskPreference { if (context == null) return; final File externalCacheDir = context.getExternalCacheDir(); if (externalCacheDir != null) { - for (final File file : externalCacheDir.listFiles((FileFilter) null)) { - deleteRecursive(file); + final File[] files = externalCacheDir.listFiles(); + if (files != null) { + for (final File file : files) { + deleteRecursive(file); + } } } final File internalCacheDir = context.getCacheDir(); if (internalCacheDir != null) { - for (final File file : internalCacheDir.listFiles((FileFilter) null)) { - deleteRecursive(file); + final File[] files = internalCacheDir.listFiles(); + if (files != null) { + for (final File file : files) { + deleteRecursive(file); + } } } } diff --git a/twidere/src/main/java/org/mariotaku/twidere/util/ThemeUtils.java b/twidere/src/main/java/org/mariotaku/twidere/util/ThemeUtils.java index 9a1430828..4904a2680 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/util/ThemeUtils.java +++ b/twidere/src/main/java/org/mariotaku/twidere/util/ThemeUtils.java @@ -107,23 +107,12 @@ public class ThemeUtils implements Constants { window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER); window.setBackgroundDrawable(getWindowBackgroundFromThemeApplyAlpha(context, alpha)); } else if (VALUE_THEME_BACKGROUND_SOLID.equals(option)) { - window.setBackgroundDrawable(new ColorDrawable(!isLightTheme(context) ? Color.BLACK : Color.WHITE)); + window.setBackgroundDrawable(new ColorDrawable(isLightTheme(context) ? Color.WHITE : Color.BLACK)); } else { window.setBackgroundDrawable(getWindowBackgroundFromTheme(context)); } } - public static void applyWindowBackground(Context context, View window, String option, int alpha) { - if (isWindowFloating(context)) return; - if (VALUE_THEME_BACKGROUND_TRANSPARENT.equals(option)) { - ViewSupport.setBackground(window, getWindowBackgroundFromThemeApplyAlpha(context, alpha)); - } else if (VALUE_THEME_BACKGROUND_SOLID.equals(option)) { - ViewSupport.setBackground(window, new ColorDrawable(!isLightTheme(context) ? Color.BLACK : Color.WHITE)); - } else { - ViewSupport.setBackground(window, getWindowBackgroundFromTheme(context)); - } - } - public static int getCardBackgroundColor(final Context context, String backgroundOption, int themeAlpha) { final TypedArray a = context.obtainStyledAttributes(new int[]{R.attr.cardItemBackgroundColor}); diff --git a/twidere/src/main/java/org/mariotaku/twidere/util/Utils.java b/twidere/src/main/java/org/mariotaku/twidere/util/Utils.java index 5158b4128..e298be8fa 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/util/Utils.java +++ b/twidere/src/main/java/org/mariotaku/twidere/util/Utils.java @@ -1652,9 +1652,13 @@ public final class Utils implements Constants { } public static boolean isNetworkAvailable(final Context context) { - final ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); - final NetworkInfo info = cm.getActiveNetworkInfo(); - return info != null && info.isConnected(); + try { + final ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + final NetworkInfo info = cm.getActiveNetworkInfo(); + return info != null && info.isConnected(); + } catch (SecurityException e) { + return true; + } } @Deprecated