diff --git a/android/src/main/kotlin/com/sharmadhiraj/installed_apps/BuiltWithUtil.kt b/android/src/main/kotlin/com/sharmadhiraj/installed_apps/BuiltWithUtil.kt index cb3c31d..c4de352 100644 --- a/android/src/main/kotlin/com/sharmadhiraj/installed_apps/BuiltWithUtil.kt +++ b/android/src/main/kotlin/com/sharmadhiraj/installed_apps/BuiltWithUtil.kt @@ -9,8 +9,8 @@ class BuiltWithUtil { companion object { - fun getPlatform(applicationInfo: ApplicationInfo): String { - val apkPath = applicationInfo.sourceDir + fun getPlatform(applicationInfo: ApplicationInfo?): String { + val apkPath = applicationInfo?.sourceDir ?: return "unknown" val zipFile = ZipFile(apkPath) val entries: List = zipFile.entries().toList().map { entry -> entry.name } return if (isFlutterApp(entries)) { @@ -49,7 +49,7 @@ class BuiltWithUtil { } fun getAppNameFromPackage(context: Context, packageInfo: PackageInfo): String { - return packageInfo.applicationInfo.loadLabel(context.packageManager).toString() + return packageInfo.applicationInfo?.loadLabel(context.packageManager)?.toString() ?: "Unknown" } diff --git a/android/src/main/kotlin/com/sharmadhiraj/installed_apps/Util.kt b/android/src/main/kotlin/com/sharmadhiraj/installed_apps/Util.kt index b90c019..bfea9cf 100644 --- a/android/src/main/kotlin/com/sharmadhiraj/installed_apps/Util.kt +++ b/android/src/main/kotlin/com/sharmadhiraj/installed_apps/Util.kt @@ -10,26 +10,44 @@ import java.io.File class Util { companion object { + + // Convert ApplicationInfo to a map of app details fun convertAppToMap( packageManager: PackageManager, - app: ApplicationInfo, + app: ApplicationInfo?, withIcon: Boolean, platformType: PlatformType?, ): HashMap { val map = HashMap() - map["name"] = packageManager.getApplicationLabel(app) - map["package_name"] = app.packageName - map["icon"] = - if (withIcon) DrawableUtil.drawableToByteArray(app.loadIcon(packageManager)) - else ByteArray(0) - val packageInfo = packageManager.getPackageInfo(app.packageName, 0) - map["version_name"] = packageInfo.versionName - map["version_code"] = getVersionCode(packageInfo) - map["built_with"] = platformType?.value ?: BuiltWithUtil.getPlatform(packageInfo.applicationInfo) - map["installed_timestamp"] = File(packageInfo.applicationInfo.sourceDir).lastModified() + + // Ensure app is not null + if (app != null) { + map["name"] = packageManager.getApplicationLabel(app) ?: "Unknown" + map["package_name"] = app.packageName + map["icon"] = + if (withIcon) DrawableUtil.drawableToByteArray(app.loadIcon(packageManager)) + else ByteArray(0) + + val packageInfo = packageManager.getPackageInfo(app.packageName, 0) + map["version_name"] = packageInfo.versionName ?: "Unknown" + map["version_code"] = getVersionCode(packageInfo) + map["built_with"] = platformType?.value ?: BuiltWithUtil.getPlatform(app) + map["installed_timestamp"] = File(app.sourceDir).lastModified() + } else { + // Handle the case where app is null, returning a map with "null" values + map["name"] = "Unknown" + map["package_name"] = "Unknown" + map["icon"] = ByteArray(0) + map["version_name"] = "Unknown" + map["version_code"] = -1 + map["built_with"] = "Unknown" + map["installed_timestamp"] = -1 + } + return map } + // Retrieve PackageManager from the context fun getPackageManager(context: Context): PackageManager { return context.packageManager } @@ -40,4 +58,4 @@ class Util { else packageInfo.longVersionCode } } -} \ No newline at end of file +}