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