Skip to content

Instantly share code, notes, and snippets.

@cavin-macwan
Created March 24, 2025 06:37
Show Gist options
  • Save cavin-macwan/287f1141890da5f6e6ac85c6185acaa3 to your computer and use it in GitHub Desktop.
Save cavin-macwan/287f1141890da5f6e6ac85c6185acaa3 to your computer and use it in GitHub Desktop.
Things that you can do with Package Manager API in Android
// 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