diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2018-07-29 18:35:26 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2018-07-29 18:35:26 +0200 |
commit | a19e619e1b94ac6fda3998fa383008ac24de193b (patch) | |
tree | 3cb1efd6223a055972b1408783a7ab05c4af16f7 /app/src/main/java/com/wireguard/android/widget/MonkeyedSnackbar.java | |
parent | MSF: make it more obvious what needs to be done (diff) | |
download | wireguard-android-a19e619e1b94ac6fda3998fa383008ac24de193b.tar.xz wireguard-android-a19e619e1b94ac6fda3998fa383008ac24de193b.zip |
MonkeyedSnackbar: work around Harsh's broken phone
I think I'd probably like to revert this, since presumably there's a
good reason in the first place why the support lib disables animations
when accessibility services are turned on?
Diffstat (limited to '')
-rw-r--r-- | app/src/main/java/com/wireguard/android/widget/MonkeyedSnackbar.java | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/app/src/main/java/com/wireguard/android/widget/MonkeyedSnackbar.java b/app/src/main/java/com/wireguard/android/widget/MonkeyedSnackbar.java new file mode 100644 index 00000000..e32316cd --- /dev/null +++ b/app/src/main/java/com/wireguard/android/widget/MonkeyedSnackbar.java @@ -0,0 +1,33 @@ +package com.wireguard.android.widget; + +import android.support.annotation.NonNull; +import android.support.design.widget.BaseTransientBottomBar; +import android.support.design.widget.Snackbar; +import android.util.Log; +import android.view.View; +import android.view.accessibility.AccessibilityManager; + +import com.wireguard.android.BootShutdownReceiver; + +import java.lang.reflect.Field; + +public class MonkeyedSnackbar { + private static final String TAG = "WireGuard/" + BootShutdownReceiver.class.getSimpleName(); + + public static Snackbar make(@NonNull final View view, @NonNull final CharSequence text, + @BaseTransientBottomBar.Duration final int duration) { + final Snackbar snackbar = Snackbar.make(view, text, duration); + + try { + final Field accessibilityManager = Snackbar.class.getSuperclass().getDeclaredField("mAccessibilityManager"); + accessibilityManager.setAccessible(true); + final Field isEnabled = AccessibilityManager.class.getDeclaredField("mIsEnabled"); + isEnabled.setAccessible(true); + isEnabled.setBoolean(accessibilityManager.get(snackbar), false); + } catch (final Exception e) { + Log.e(TAG, "Unable to force-enable snackbar animations", e); + } + + return snackbar; + } +} |