From 13706f8baaa4e4504fed83e0b3be78b46a677ea6 Mon Sep 17 00:00:00 2001 From: emanuele-f Date: Sun, 7 Feb 2021 18:13:57 +0100 Subject: [PATCH] Add apps loading in progress message --- .../emanuelef/remote_capture/CaptureService.java | 5 +++-- .../com/emanuelef/remote_capture/MainActivity.java | 2 ++ .../java/com/emanuelef/remote_capture/Utils.java | 13 +++++++++++++ app/src/main/res/values/strings.xml | 3 +++ 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/emanuelef/remote_capture/CaptureService.java b/app/src/main/java/com/emanuelef/remote_capture/CaptureService.java index 6ada9aec..5874a092 100644 --- a/app/src/main/java/com/emanuelef/remote_capture/CaptureService.java +++ b/app/src/main/java/com/emanuelef/remote_capture/CaptureService.java @@ -154,7 +154,8 @@ public class CaptureService extends VpnService implements Runnable { try { builder.addAllowedApplication(app_filter); } catch (PackageManager.NameNotFoundException e) { - Toast.makeText(this, "Could not find the specified app: " + app_filter, Toast.LENGTH_SHORT).show(); + String msg = String.format(getResources().getString(R.string.app_not_found), app_filter); + Toast.makeText(this, msg, Toast.LENGTH_SHORT).show(); return super.onStartCommand(intent, flags, startId); } } @@ -162,7 +163,7 @@ public class CaptureService extends VpnService implements Runnable { try { mParcelFileDescriptor = builder.setSession(CaptureService.VpnSessionName).establish(); } catch (IllegalArgumentException | IllegalStateException e) { - Toast.makeText(this, "VPN setup failed", Toast.LENGTH_SHORT).show(); + Utils.showToast(this, R.string.vpn_setup_failed); return super.onStartCommand(intent, flags, startId); } diff --git a/app/src/main/java/com/emanuelef/remote_capture/MainActivity.java b/app/src/main/java/com/emanuelef/remote_capture/MainActivity.java index 770441e5..b0707d38 100644 --- a/app/src/main/java/com/emanuelef/remote_capture/MainActivity.java +++ b/app/src/main/java/com/emanuelef/remote_capture/MainActivity.java @@ -48,6 +48,7 @@ import android.util.Log; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; +import android.widget.Toast; import com.google.android.material.tabs.TabLayout; import com.google.android.material.tabs.TabLayoutMediator; @@ -441,6 +442,7 @@ public class MainActivity extends AppCompatActivity implements LoaderManager.Loa if(mInstalledApps == null) { /* The applications loader has not finished yet. */ mOpenAppsWhenDone = true; + Utils.showToast(this, R.string.apps_loading_please_wait); return; } diff --git a/app/src/main/java/com/emanuelef/remote_capture/Utils.java b/app/src/main/java/com/emanuelef/remote_capture/Utils.java index 896d6ac8..e433eb15 100644 --- a/app/src/main/java/com/emanuelef/remote_capture/Utils.java +++ b/app/src/main/java/com/emanuelef/remote_capture/Utils.java @@ -34,6 +34,7 @@ import android.net.wifi.WifiManager; import android.os.Build; import android.text.format.Formatter; import android.util.Log; +import android.widget.Toast; import androidx.core.content.ContextCompat; @@ -93,6 +94,7 @@ public class Utils { apps.add(new AppDescriptor("", icon, context.getResources().getString(R.string.no_filter), -1, false)); Log.d("APPS", "num apps (system+user): " + packs.size()); + long tstart = now(); for (int i = 0; i < packs.size(); i++) { PackageInfo p = packs.get(i); @@ -102,13 +104,18 @@ public class Utils { if(!package_name.equals("com.emanuelef.remote_capture")) { String appName = p.applicationInfo.loadLabel(pm).toString(); + + // NOTE: this call is expensive icon = p.applicationInfo.loadIcon(pm); + int uid = p.applicationInfo.uid; apps.add(new AppDescriptor(appName, icon, package_name, uid, is_system)); Log.d("APPS", appName + " - " + package_name + " [" + uid + "]" + (is_system ? " - SYS" : " - USR")); } } + + Log.d("APPS", packs.size() + " apps loaded in " + (now() - tstart) +" seconds"); return apps; } @@ -218,6 +225,7 @@ public class Utils { return "127.0.0.1"; } + // returns current timestamp in seconds public static long now() { Calendar calendar = Calendar.getInstance(); return(calendar.getTimeInMillis() / 1000); @@ -251,4 +259,9 @@ public class Utils { return false; } + + static void showToast(Context context, int id) { + String msg = context.getResources().getString(id); + Toast.makeText(context, msg, Toast.LENGTH_SHORT).show(); + } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a2489ac0..7dcb6c50 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -65,5 +65,8 @@ YES NO The currently active VPN app will be disconnected. Do you want to proceed? + VPN setup failed + App "%1$s" not found + Apps loading in progress, please wait