diff --git a/packages/package_info_plus/package_info_plus/android/src/main/kotlin/dev/fluttercommunity/plus/packageinfo/PackageInfoPlugin.kt b/packages/package_info_plus/package_info_plus/android/src/main/kotlin/dev/fluttercommunity/plus/packageinfo/PackageInfoPlugin.kt index 4e7cea1a15..e546e38aa1 100644 --- a/packages/package_info_plus/package_info_plus/android/src/main/kotlin/dev/fluttercommunity/plus/packageinfo/PackageInfoPlugin.kt +++ b/packages/package_info_plus/package_info_plus/android/src/main/kotlin/dev/fluttercommunity/plus/packageinfo/PackageInfoPlugin.kt @@ -38,7 +38,7 @@ class PackageInfoPlugin : MethodCallHandler, FlutterPlugin { val buildSignature = getBuildSignature(packageManager) - val installerPackage = packageManager.getInstallerPackageName(applicationContext!!.packageName); + val installerPackage = getInstallerPackageName() val infoMap = HashMap() infoMap.apply { @@ -59,6 +59,21 @@ class PackageInfoPlugin : MethodCallHandler, FlutterPlugin { } } + /** + * Using initiatingPackageName on Android 11 and newer because it can't be changed + * https://developer.android.com/reference/android/content/pm/InstallSourceInfo#getInitiatingPackageName() + */ + private fun getInstallerPackageName(): String? { + val packageManager = applicationContext!!.packageManager + val packageName = applicationContext!!.packageName + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + packageManager.getInstallSourceInfo(packageName).initiatingPackageName + } else { + @Suppress("DEPRECATION") + packageManager.getInstallerPackageName(packageName) + } + } + @Suppress("deprecation") private fun getLongVersionCode(info: PackageInfo): Long { return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {