mirror of
https://github.com/topjohnwu/Magisk.git
synced 2024-12-03 15:05:32 +00:00
50 lines
1.6 KiB
Kotlin
50 lines
1.6 KiB
Kotlin
|
package com.topjohnwu.magisk.utils
|
||
|
|
||
|
import android.content.pm.ApplicationInfo
|
||
|
import android.content.pm.ComponentInfo
|
||
|
import android.content.pm.PackageInfo
|
||
|
import android.content.pm.PackageManager
|
||
|
import android.content.pm.PackageManager.*
|
||
|
|
||
|
val PackageInfo.processes
|
||
|
get() = activities?.processNames.orEmpty() +
|
||
|
services?.processNames.orEmpty() +
|
||
|
receivers?.processNames.orEmpty() +
|
||
|
providers?.processNames.orEmpty()
|
||
|
|
||
|
val Array<out ComponentInfo>.processNames get() = mapNotNull { it.processName }
|
||
|
|
||
|
val ApplicationInfo.packageInfo: PackageInfo?
|
||
|
get() {
|
||
|
val pm: PackageManager by inject()
|
||
|
|
||
|
return try {
|
||
|
val request = GET_ACTIVITIES or
|
||
|
GET_SERVICES or
|
||
|
GET_RECEIVERS or
|
||
|
GET_PROVIDERS
|
||
|
pm.getPackageInfo(packageName, request)
|
||
|
} catch (e1: Exception) {
|
||
|
try {
|
||
|
pm.activities(packageName).apply {
|
||
|
services = pm.services(packageName)
|
||
|
receivers = pm.receivers(packageName)
|
||
|
providers = pm.providers(packageName)
|
||
|
}
|
||
|
} catch (e2: Exception) {
|
||
|
null
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
fun PackageManager.activities(packageName: String) =
|
||
|
getPackageInfo(packageName, GET_ACTIVITIES)
|
||
|
|
||
|
fun PackageManager.services(packageName: String) =
|
||
|
getPackageInfo(packageName, GET_SERVICES).services
|
||
|
|
||
|
fun PackageManager.receivers(packageName: String) =
|
||
|
getPackageInfo(packageName, GET_RECEIVERS).receivers
|
||
|
|
||
|
fun PackageManager.providers(packageName: String) =
|
||
|
getPackageInfo(packageName, GET_PROVIDERS).providers
|