Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 11 additions & 4 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@ plugins {

android {
namespace 'com.trustdevice.android.demo'
compileSdk 34
compileSdk 36

defaultConfig {
applicationId "com.trustdevice.android.demo"
minSdk 21
targetSdk 34
versionCode 12
versionName "1.1.3"
targetSdk 36
versionCode 114
versionName "1.1.4"
ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
}
Expand Down Expand Up @@ -48,6 +48,13 @@ android {
viewBinding true
dataBinding true
}

dependenciesInfo {
// Disables dependency metadata when building APKs.
includeInApk = false
// Disables dependency metadata when building Android App Bundles.
includeInBundle = false
}
}

dependencies {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,13 +81,14 @@ class ItemListActivity : BaseActivity<ActivityAppListBinding>() {
if (info == null) {
continue
}
if (!showSystemApp && isSystemApp(info.applicationInfo)) {
val applicationInfo = info.applicationInfo ?: continue
if (!showSystemApp && isSystemApp(applicationInfo)) {
continue
}
val packageName = info.packageName
val versionName = info.versionName
val icon = info.applicationInfo.loadIcon(packageManager)
val appName = packageManager.getApplicationLabel(info.applicationInfo).toString()
val icon = info.applicationInfo?.loadIcon(packageManager)
val appName = packageManager.getApplicationLabel(applicationInfo).toString()
mItemData.add(AppItemData(icon, appName, packageName, versionName))
}
}
Expand Down
4 changes: 2 additions & 2 deletions trustdevice/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@ afterEvaluate {

android {
namespace 'cn.tongdun.mobrisk'
compileSdk 34
compileSdk 36

ndkVersion "25.2.9519653"
defaultConfig {
minSdk 21
targetSdk 34
targetSdk 36

externalNativeBuild{
cmake {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ class FMCore private constructor() {
}

private fun collectorPackageListInfo() {
val appListCollector = AppListCollector(mContext.packageManager)
val appListCollector = AppListCollector(mContext)
mDeviceInfo.appList = appListCollector.getAppList()
mDeviceInfo.systemAppList = appListCollector.getSystemAppList()
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package cn.tongdun.mobrisk.core.collectors

import android.annotation.SuppressLint
import android.content.Context
import android.content.pm.ApplicationInfo
import android.content.pm.PackageInfo
import android.content.pm.PackageManager
import android.os.Build
import android.text.TextUtils
import cn.tongdun.mobrisk.core.tools.executeSafe

Expand All @@ -19,31 +21,47 @@ interface AppListDataInterface {
}

@SuppressLint("QueryPermissionsNeeded")
class AppListCollector(packageManager: PackageManager) : AppListDataInterface {
class AppListCollector(context: Context) : AppListDataInterface {
private val appList: MutableList<String?> = ArrayList()
private val systemAppList: MutableList<String?> = ArrayList()

init {
executeSafe {
packageManager.getInstalledPackages(PackageManager.GET_ACTIVITIES)
.filter {
isSystemApp(it)
}.map {
appList.add(it.packageName)
if (hasQueryAllPackagesPermission(context)) {
val packageManager = context.packageManager
executeSafe {
packageManager.getInstalledPackages(PackageManager.GET_ACTIVITIES)
.filter {
isSystemApp(it)
}.map {
appList.add(it.packageName)
}
packageManager.getInstalledPackages(PackageManager.GET_META_DATA).fold(
Pair(systemAppList, appList)
) { (systemList, appList), packageInfo ->
if (isSystemApp(packageInfo)) {
systemList.add(packageInfo.packageName)
} else {
appList.add(packageInfo.packageName)
}
Pair(systemList, appList)
}
packageManager.getInstalledPackages(PackageManager.GET_META_DATA).fold(
Pair(systemAppList, appList)
) { (systemList, appList), packageInfo ->
if (isSystemApp(packageInfo)) {
systemList.add(packageInfo.packageName)
} else {
appList.add(packageInfo.packageName)
}
Pair(systemList, appList)
}
}
}

private fun hasQueryAllPackagesPermission(context: Context): Boolean {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
return true
}
return executeSafe({
val packageInfo = context.packageManager.getPackageInfo(
context.packageName,
PackageManager.GET_PERMISSIONS
)
packageInfo.requestedPermissions?.contains(android.Manifest.permission.QUERY_ALL_PACKAGES) == true
}, false)
}

@SuppressLint("QueryPermissionsNeeded")
override fun getAppList(): String {
return TextUtils.join(",", appList)
Expand All @@ -54,10 +72,9 @@ class AppListCollector(packageManager: PackageManager) : AppListDataInterface {
}

private fun isSystemApp(packageInfo: PackageInfo): Boolean {
val isSysApp =
packageInfo.applicationInfo.flags and ApplicationInfo.FLAG_SYSTEM == ApplicationInfo.FLAG_SYSTEM
val isSysUpd =
packageInfo.applicationInfo.flags and ApplicationInfo.FLAG_UPDATED_SYSTEM_APP == ApplicationInfo.FLAG_UPDATED_SYSTEM_APP
val appInfo = packageInfo.applicationInfo ?: return false
val isSysApp = appInfo.flags and ApplicationInfo.FLAG_SYSTEM == ApplicationInfo.FLAG_SYSTEM
val isSysUpd = appInfo.flags and ApplicationInfo.FLAG_UPDATED_SYSTEM_APP == ApplicationInfo.FLAG_UPDATED_SYSTEM_APP
return isSysApp || isSysUpd
}

Expand Down