Created
March 24, 2025 06:37
-
-
Save cavin-macwan/287f1141890da5f6e6ac85c6185acaa3 to your computer and use it in GitHub Desktop.
Things that you can do with Package Manager API in Android
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 1. Retrieve installed apps (system & user-installed): | |
val apps = packageManager.getInstalledApplications(PackageManager.GET_META_DATA) | |
// 2. Get the App Name and icon | |
val appName = packageManager.getApplicationLabel(appInfo).toString() | |
val appIcon = packageManager.getApplicationIcon(appInfo.packageName) | |
// 3. Get App permisions | |
val permissions = packageManager.getPackageInfo(packageName, PackageManager.GET_PERMISSIONS).requestedPermissions | |
// 4. Get first install and last update times | |
val packageInfo = packageManager.getPackageInfo(packageName, 0) | |
val firstInstallTime = packageInfo.firstInstallTime | |
val lastUpdateTime = packageInfo.lastUpdateTime | |
// 5. Check if an App is installed | |
fun isAppInstalled(context: Context, packageName: String): Boolean { | |
return try { | |
context.packageManager.getPackageInfo(packageName, 0) | |
true | |
} catch (e: PackageManager.NameNotFoundException) { | |
false | |
} | |
} | |
// 6. Launch Activity of any App | |
val intent = packageManager.getLaunchIntentForPackage(packageName) | |
context.startActivity(intent) | |
// 7. get all services in the App | |
val services = packageManager.getPackageInfo(packageName, PackageManager.GET_SERVICES).services | |
// 8. Check if an App has a specific permission | |
val permissionStatus = packageManager.checkPermission(android.Manifest.permission.CAMERA, packageName) | |
val hasPermission = permissionStatus == PackageManager.PERMISSION_GRANTED | |
// 9. Get intent filters for an App | |
val intent = Intent(Intent.ACTION_MAIN, null) | |
intent.addCategory(Intent.CATEGORY_LAUNCHER) | |
val resolveInfos = packageManager.queryIntentActivities(intent, 0) | |
// 10. Find the default browser | |
val intent = Intent(Intent.ACTION_VIEW, Uri.parse("http://")) | |
val resolveInfo = packageManager.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY) | |
val defaultBrowser = resolveInfo?.activityInfo?.packageName | |
// 11. Find the default SMS App | |
val smsPackage = android.provider.Telephony.Sms.getDefaultSmsPackage(context) | |
// 12. Get all email Apps installed on the device | |
val intent = Intent(Intent.ACTION_SENDTO) | |
intent.data = Uri.parse("mailto:") | |
val emailApps = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY) | |
// 13. Check if an App was installed from Google Play | |
val installer = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { | |
packageManager.getInstallSourceInfo(packageName).installingPackageName | |
} else { | |
packageManager.getInstallerPackageName(packageName) | |
} | |
val installedFromPlayStore = installer == "com.android.vending" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment