Fix compilation issue.

This commit is contained in:
Benoit Marty 2025-07-07 17:50:53 +02:00
parent 8a9a699062
commit a283eea620

View File

@ -32,7 +32,7 @@ class VectorActivityLifecycleCallbacks constructor(private val popupAlertManager
/** /**
* The activities information collected from the app manifest. * The activities information collected from the app manifest.
*/ */
private var activitiesInfo: Array<ActivityInfo> = emptyArray() private var activitiesInfo: List<ActivityInfo>? = null
private val coroutineScope = CoroutineScope(SupervisorJob()) private val coroutineScope = CoroutineScope(SupervisorJob())
@ -51,24 +51,32 @@ class VectorActivityLifecycleCallbacks constructor(private val popupAlertManager
override fun onActivityStopped(activity: Activity) {} override fun onActivityStopped(activity: Activity) {}
override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) { override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
if (activitiesInfo.isEmpty()) { if (activitiesInfo == null) {
val context = activity.applicationContext val context = activity.applicationContext
val packageManager: PackageManager = context.packageManager val packageManager: PackageManager = context.packageManager
// Get all activities from element android // Get all activities from element android
activitiesInfo = packageManager.getPackageInfoCompat(context.packageName, PackageManager.GET_ACTIVITIES).activities val activities = packageManager
.getPackageInfoCompat(context.packageName, PackageManager.GET_ACTIVITIES)
.activities
.orEmpty()
.toList()
// Get all activities from PermissionController module // Get all activities from PermissionController module
// See https://source.android.com/docs/core/architecture/modular-system/permissioncontroller#package-format // See https://source.android.com/docs/core/architecture/modular-system/permissioncontroller#package-format
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.S_V2) { val otherActivities = if (Build.VERSION.SDK_INT > Build.VERSION_CODES.S_V2) {
activitiesInfo += tryOrNull { (tryOrNull {
packageManager.getPackageInfoCompat("com.google.android.permissioncontroller", PackageManager.GET_ACTIVITIES).activities packageManager.getPackageInfoCompat("com.google.android.permissioncontroller", PackageManager.GET_ACTIVITIES).activities
} ?: tryOrNull { } ?: tryOrNull {
packageManager.getModuleInfo("com.google.android.permission", 1).packageName?.let { packageManager.getModuleInfo("com.google.android.permission", 1).packageName?.let {
packageManager.getPackageInfoCompat(it, PackageManager.GET_ACTIVITIES or PackageManager.MATCH_APEX).activities packageManager.getPackageInfoCompat(it, PackageManager.GET_ACTIVITIES or PackageManager.MATCH_APEX).activities
} }
}.orEmpty() })
.orEmpty()
.toList()
} else {
emptyList()
} }
activitiesInfo = activities + otherActivities
} }
// restart the app if the task contains an unknown activity // restart the app if the task contains an unknown activity
@ -144,5 +152,5 @@ class VectorActivityLifecycleCallbacks constructor(private val popupAlertManager
* @param activity the activity of the task * @param activity the activity of the task
* @return true if the activity is potentially malicious * @return true if the activity is potentially malicious
*/ */
private fun isPotentialMaliciousActivity(activity: ComponentName): Boolean = activitiesInfo.none { it.name == activity.className } private fun isPotentialMaliciousActivity(activity: ComponentName): Boolean = activitiesInfo.orEmpty().none { it.name == activity.className }
} }