[tor-commits] [orbot/master] Fixed VPN App UI for apps that were disabled or uninstalled

n8fr8 at torproject.org n8fr8 at torproject.org
Tue Apr 28 21:05:00 UTC 2020


commit 7b832f19d0b5891a824e81186b2f3b10389ac147
Author: bim <dsnake at protonmail.com>
Date:   Fri Jul 12 15:07:26 2019 -0400

    Fixed VPN App UI for apps that were disabled or uninstalled
---
 .../org/torproject/android/OrbotMainActivity.java  | 30 ++++++++++++++++------
 .../torproject/android/ui/AppManagerActivity.java  | 15 +++--------
 .../android/service/vpn/TorifiedApp.java           |  3 ++-
 3 files changed, 28 insertions(+), 20 deletions(-)

diff --git a/app/src/main/java/org/torproject/android/OrbotMainActivity.java b/app/src/main/java/org/torproject/android/OrbotMainActivity.java
index 0dad0520..5e763ec7 100644
--- a/app/src/main/java/org/torproject/android/OrbotMainActivity.java
+++ b/app/src/main/java/org/torproject/android/OrbotMainActivity.java
@@ -49,6 +49,7 @@ import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.SharedPreferences;
 import android.content.SharedPreferences.Editor;
+import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.PackageManager.NameNotFoundException;
 import android.database.Cursor;
@@ -1321,19 +1322,17 @@ public class OrbotMainActivity extends AppCompatActivity
                 String tordAppString = mPrefs.getString(PREFS_KEY_TORIFIED, "");
 
                 if (TextUtils.isEmpty(tordAppString)) {
-                    TextView tv = new TextView(this);
-                    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
-                    params.setMargins(12, 3, 3, 3);
-                    tv.setLayoutParams(params);
-                    tv.setText(R.string.full_device_vpn);
-                    llBoxShortcuts.addView(tv);
+                    addFullDeviceVpnView(llBoxShortcuts);
                 } else {
                     StringTokenizer st = new StringTokenizer(tordAppString, "|");
                     while (st.hasMoreTokens() && pkgIds.size() < 4)
                         pkgIds.add(st.nextToken());
-
+                    int appsAdded = 0;
                     for (final String pkgId : pkgIds) {
                         try {
+                            ApplicationInfo aInfo = getPackageManager().getApplicationInfo(pkgId, 0);
+                            // skip disabled packages
+                            if (!aInfo.enabled) continue;
                             ImageView iv = new ImageView(this);
                             LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
                             params.setMargins(3, 3, 3, 3);
@@ -1348,11 +1347,17 @@ public class OrbotMainActivity extends AppCompatActivity
                             });
 
                             llBoxShortcuts.addView(iv);
-
+                            appsAdded++;
                         } catch (Exception e) {
                             //package not installed?
                         }
                     }
+                    if (appsAdded == 0) {
+                        /* if a user uninstalled or disabled all apps that were set on the device
+                           then we want to have the no apps added view appear even though
+                           the tordAppString variable is not empty */
+                        addFullDeviceVpnView(llBoxShortcuts);
+                    }
                 }
             }
             else
@@ -1383,4 +1388,13 @@ public class OrbotMainActivity extends AppCompatActivity
 
     }
 
+    private void addFullDeviceVpnView(LinearLayout llBoxShortcuts) {
+        TextView tv = new TextView(this);
+        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
+        params.setMargins(12, 3, 3, 3);
+        tv.setLayoutParams(params);
+        tv.setText(R.string.full_device_vpn);
+        llBoxShortcuts.addView(tv);
+    }
+
 }
diff --git a/app/src/main/java/org/torproject/android/ui/AppManagerActivity.java b/app/src/main/java/org/torproject/android/ui/AppManagerActivity.java
index afa09500..a8c7a180 100644
--- a/app/src/main/java/org/torproject/android/ui/AppManagerActivity.java
+++ b/app/src/main/java/org/torproject/android/ui/AppManagerActivity.java
@@ -16,6 +16,7 @@ import org.torproject.android.R;
 import org.torproject.android.service.util.TorServiceUtils;
 import org.torproject.android.service.vpn.TorifiedApp;
 
+import android.Manifest;
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.content.SharedPreferences.Editor;
@@ -204,7 +205,8 @@ public class AppManagerActivity extends AppCompatActivity implements OnClickList
         while (itAppInfo.hasNext())
         {
             aInfo = itAppInfo.next();
-
+            // don't include apps user has disabled, often these ship with the device
+            if (!aInfo.enabled) continue;
             app = new TorifiedApp();
 
             try {
@@ -214,10 +216,9 @@ public class AppManagerActivity extends AppCompatActivity implements OnClickList
                 {
                     for (String permInfo:pInfo.requestedPermissions)
                     {
-                        if (permInfo.equals("android.permission.INTERNET"))
+                        if (permInfo.equals(Manifest.permission.INTERNET))
                         {
                             app.setUsesInternet(true);
-
                         }
                     }
 
@@ -229,14 +230,6 @@ public class AppManagerActivity extends AppCompatActivity implements OnClickList
                 e.printStackTrace();
             }
 
-            /**
-             if ((aInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 1)
-             {
-             //System app
-             app.setUsesInternet(true);
-             }**/
-
-
             try
             {
                 app.setName(pMgr.getApplicationLabel(aInfo).toString());
diff --git a/orbotservice/src/main/java/org/torproject/android/service/vpn/TorifiedApp.java b/orbotservice/src/main/java/org/torproject/android/service/vpn/TorifiedApp.java
index 397dd259..db25fd00 100644
--- a/orbotservice/src/main/java/org/torproject/android/service/vpn/TorifiedApp.java
+++ b/orbotservice/src/main/java/org/torproject/android/service/vpn/TorifiedApp.java
@@ -1,5 +1,6 @@
 package org.torproject.android.service.vpn;
 
+import android.Manifest;
 import android.content.Context;
 import android.content.SharedPreferences;
 import android.content.pm.ApplicationInfo;
@@ -193,7 +194,7 @@ public class TorifiedApp implements Comparable {
 				{
 					for (String permInfo:pInfo.requestedPermissions)
 					{
-						if (permInfo.equals("android.permission.INTERNET"))
+						if (permInfo.equals(Manifest.permission.INTERNET))
 						{
 							app.setUsesInternet(true);
 





More information about the tor-commits mailing list