NTP-29477 | Blacklisted app optimisation (#1063)

This commit is contained in:
Mantri Ramkishor
2025-02-05 15:18:37 +05:30
committed by GitHub
parent 81c69c41be
commit a0ee5dfaa6
4 changed files with 78 additions and 62 deletions

View File

@@ -21,6 +21,7 @@ import com.facebook.react.bridge.Callback;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.uimanager.UIManagerModule;
import com.navi.alfred.AlfredManager;
import com.navi.pulse.PulseManager;
@@ -111,30 +112,25 @@ public class DeviceUtilsModule extends ReactContextBaseJavaModule {
try {
PackageManager packageManager = RNContext.getPackageManager();
List<PackageInfo> installedPackages = packageManager.getInstalledPackages(0);
List<ApplicationInfo> packages = packageManager.getInstalledApplications(PackageManager.GET_META_DATA);
JSONArray jsonArray = new JSONArray();
for (PackageInfo packageInfo : installedPackages) {
final PackageManager pm = RNContext.getApplicationContext().getPackageManager();
ApplicationInfo appsInstalled;
try {
appsInstalled = pm.getApplicationInfo( packageInfo.packageName, 0);
} catch (final PackageManager.NameNotFoundException e) {
appsInstalled = null;
}
final String applicationName = (String) (appsInstalled != null ? pm.getApplicationLabel(appsInstalled) : "(unknown)");
JSONObject mainObject = new JSONObject();
JSONObject appDetails = new JSONObject();
appDetails.put("appName",packageInfo.applicationInfo.processName);
appDetails.put("firstInstallTime", packageInfo.firstInstallTime);
appDetails.put("lastUpdateTime", packageInfo.lastUpdateTime);
appDetails.put("applicationName", applicationName);
appDetails.put("applicationIcon",getAppIcon(packageInfo.packageName));
mainObject.put("packageName", packageInfo.packageName);
mainObject.put("appDetails", appDetails);
try {
ApplicationInfo appInfo = packageInfo.applicationInfo;
String applicationName = (String) packageManager.getApplicationLabel(appInfo);
appDetails.put("appName", appInfo.processName);
appDetails.put("firstInstallTime", packageInfo.firstInstallTime);
appDetails.put("lastUpdateTime", packageInfo.lastUpdateTime);
appDetails.put("applicationName", applicationName != null ? applicationName : "(unknown)");
appDetails.put("applicationIcon", getAppIcon(packageInfo.packageName));
mainObject.put("packageName", packageInfo.packageName);
mainObject.put("appDetails", appDetails);
jsonArray.put(mainObject);
jsonArray.put(mainObject);
} catch (Exception e) {
Log.e("getAllInstalledApp", "Error processing package: " + packageInfo.packageName, e);
}
}
promise.resolve(jsonArray.toString());
} catch (Exception err) {
@@ -163,7 +159,43 @@ public class DeviceUtilsModule extends ReactContextBaseJavaModule {
promise.reject(err);
}
}
@ReactMethod
public void getBlacklistedApps(ReadableMap blacklistedAppsMap, Promise promise) {
try {
PackageManager packageManager = RNContext.getPackageManager();
List<PackageInfo> installedPackages = packageManager.getInstalledPackages(0);
JSONArray jsonArray = new JSONArray();
for (PackageInfo packageInfo : installedPackages) {
// Skip system apps
if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
continue;
}
String packageName = packageInfo.packageName;
if (blacklistedAppsMap.hasKey(packageName)) {
JSONObject appDetails = new JSONObject();
try {
String applicationName = (String) packageManager.getApplicationLabel(packageInfo.applicationInfo);
appDetails.put("packageName", packageName);
appDetails.put("applicationName", applicationName != null ? applicationName : "(unknown)");
appDetails.put("applicationIcon", getAppIcon(packageName));
jsonArray.put(appDetails);
} catch (Exception e) {
e.printStackTrace();
promise.reject("ERROR", e.getMessage());
}
}
}
promise.resolve(jsonArray.toString());
} catch (Exception err) {
err.printStackTrace();
promise.reject("ERROR", err.getMessage());
}
}
@ReactMethod
public void sendBottomSheetOpenSignal(Boolean isBottomSheetOpen) {
}