OSDN Git Service

Better handling of F-Droid versus Play Store releases
authorBraden Farmer <farmerbb@gmail.com>
Mon, 4 Jun 2018 00:27:33 +0000 (18:27 -0600)
committerBraden Farmer <farmerbb@gmail.com>
Mon, 4 Jun 2018 00:27:33 +0000 (18:27 -0600)
app/src/main/java/com/farmerbb/taskbar/fragment/AboutFragment.java
app/src/main/java/com/farmerbb/taskbar/fragment/AdvancedFragment.java
app/src/main/java/com/farmerbb/taskbar/util/U.java
app/src/main/res/values/donottranslate.xml

index 9f7d238..fbc64b3 100644 (file)
@@ -53,6 +53,7 @@ public class AboutFragment extends SettingsFragment implements Preference.OnPref
 
         if(BuildConfig.APPLICATION_ID.equals(BuildConfig.BASE_APPLICATION_ID)
                 && U.isPlayStoreInstalled(getActivity())
+                && U.isPlayStoreRelease(getActivity())
                 && !U.isSystemApp(getActivity())
                 && !pref.getBoolean("hide_donate", false)) {
             findPreference("donate").setOnPreferenceClickListener(this);
@@ -96,7 +97,10 @@ public class AboutFragment extends SettingsFragment implements Preference.OnPref
 
         switch(p.getKey()) {
             case "about":
-                U.checkForUpdates(getActivity());
+                if(!BuildConfig.DEBUG)
+                    U.checkForUpdates(getActivity());
+                else
+                    U.showToast(getActivity(), R.string.debug_build);
                 break;
             case "donate":
                 NumberFormat format = NumberFormat.getCurrencyInstance();
index 79056a7..e8b0359 100644 (file)
@@ -82,7 +82,8 @@ public class AdvancedFragment extends SettingsFragment implements Preference.OnP
         findPreference("keyboard_shortcut").setSummary(DependencyUtils.getKeyboardShortcutSummary(getActivity()));
 
         if(!BuildConfig.APPLICATION_ID.equals(BuildConfig.ANDROIDX86_APPLICATION_ID)
-                && U.isPlayStoreInstalled(getActivity())) {
+                && U.isPlayStoreInstalled(getActivity())
+                && U.isPlayStoreRelease(getActivity())) {
             findPreference("secondscreen").setOnPreferenceClickListener(this);
             secondScreenPrefEnabled = true;
         } else
index 93588f6..0affba9 100644 (file)
@@ -15,6 +15,7 @@
 
 package com.farmerbb.taskbar.util;
 
+import android.annotation.SuppressLint;
 import android.annotation.TargetApi;
 import android.app.Activity;
 import android.app.ActivityManager;
@@ -32,9 +33,11 @@ import android.content.pm.ActivityInfo;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.LauncherActivityInfo;
 import android.content.pm.LauncherApps;
+import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.content.pm.ShortcutInfo;
+import android.content.pm.Signature;
 import android.content.res.Configuration;
 import android.graphics.Color;
 import android.graphics.Rect;
@@ -562,24 +565,19 @@ public class U {
     }
 
     public static void checkForUpdates(Context context) {
-        if(!BuildConfig.DEBUG) {
-            String url;
-            try {
-                context.getPackageManager().getPackageInfo("com.android.vending", 0);
-                url = "https://play.google.com/store/apps/details?id=" + BuildConfig.APPLICATION_ID;
-            } catch (PackageManager.NameNotFoundException e) {
-                url = "https://f-droid.org/repository/browse/?fdid=" + BuildConfig.BASE_APPLICATION_ID;
-            }
+        String url;
+        if(isPlayStoreRelease(context))
+            url = "https://play.google.com/store/apps/details?id=" + BuildConfig.APPLICATION_ID;
+        else
+            url = "https://f-droid.org/repository/browse/?fdid=" + BuildConfig.APPLICATION_ID;
 
-            Intent intent = new Intent(Intent.ACTION_VIEW);
-            intent.setData(Uri.parse(url));
-            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        Intent intent = new Intent(Intent.ACTION_VIEW);
+        intent.setData(Uri.parse(url));
+        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
 
-            try {
-                context.startActivity(intent);
-            } catch (ActivityNotFoundException e) { /* Gracefully fail */ }
-        } else
-            showToast(context, R.string.debug_build);
+        try {
+            context.startActivity(intent);
+        } catch (ActivityNotFoundException e) { /* Gracefully fail */ }
     }
 
     public static boolean launcherIsDefault(Context context) {
@@ -1309,4 +1307,19 @@ public class U {
 
         return theme > -1 ? new ContextThemeWrapper(context, theme) : context;
     }
+
+    @SuppressLint("PackageManagerGetSignatures")
+    public static boolean isPlayStoreRelease(Context context) {
+        Signature playStoreSignature = new Signature(context.getString(R.string.signature));
+        try {
+            PackageManager pm = context.getPackageManager();
+            PackageInfo info = pm.getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
+            for(Signature signature : info.signatures) {
+                if(signature.equals(playStoreSignature))
+                    return true;
+            }
+        } catch (Exception e) { /* Gracefully fail */ }
+
+        return false;
+    }
 }
index 433a609..9e73827 100644 (file)
@@ -22,6 +22,8 @@
     <string name="dashboard_grid_description" translatable="false">%1$d &#215; %2$d</string>
     <string name="infinity" translatable="false">&#8734;</string>
 
+    <string name="signature">308202cf308201b7a00302010202046c261812300d06092a864886f70d01010b05003018311630140603550403130d42726164656e204661726d6572301e170d3134303231303031333730325a170d3339303230343031333730325a3018311630140603550403130d42726164656e204661726d657230820122300d06092a864886f70d01010105000382010f003082010a0282010100c1e371d6728bfb64325f22fc07ac4f37521561b64dea2159893ac7714478bffa88271c97dbfbe19f5f5a43a25eece02c401f354b17c4b9ec2eef77c9175ce9e95812de1ad14a03734c2fcac4b4f35b3b94781a0de7093370c8f7c1fddb228f00bbd481c7bdc6f0448a86dbcd0bf52254e2e59026b3c7969ff73dc7d2d24c935ec9a57ccaa6997ee2395b2f6010241cb72e39363786d99920de2191e044d4f11bb39cd0e48c2e4efcc3d61fd6d3b244ddb52a74eabeadaa1ce66c49d5ee2d46c8f18f11ada71f3d269bbddfa0d487fcc7b6feafe57a44d7cb50aeddff4a156f1d607d106c5642bb892613fb6f9b2f40ac54238152e511a8b5c8451f2adeca71850203010001a321301f301d0603551d0e04160414bcaf5a264c3492db7723df851a4a96f2fee31253300d06092a864886f70d01010b0500038201010008039ba098a52f66271577f041fabec9e4c0ee1a88282187902699314b628833b2a6164e3e142f3cf715ba602128432acf4a898dc411fe9a88951d483536d94a328148744780a9fde1767894bf9cc5c6f03162842785f0424b37c16c88439fbc286593b3cb29bbdb282a13bcf9fc819af004d6d2b5cfc28bcc89224542469ec203629f335c2f7f40cf56f5adc082d63a38d8358f85b1b798dff78456f035073a730e945c7398228f74ad7b23afb108e11ff9ceabdb485513f4534f50d0e2b59b7dc94516631c27eaac1a8b8d5c4a601143b9eb4f0b91760c81a000e21557954ef78f9eb5012c86ba50988645a6f18445182a5d65764fb456b4e7e0e377ef7040</string>
+
     <string-array name="pref_start_menu_list_values">
         <item>list</item>
         <item>grid</item>