19
19
package com.tencent.shadow.core.loader.managers
20
20
21
21
import android.annotation.SuppressLint
22
+ import android.annotation.TargetApi
22
23
import android.content.ComponentName
23
24
import android.content.Intent
24
- import android.content.pm.*
25
+ import android.content.pm.ActivityInfo
26
+ import android.content.pm.ApplicationInfo
27
+ import android.content.pm.ComponentInfo
28
+ import android.content.pm.PackageInfo
29
+ import android.content.pm.PackageManager
30
+ import android.content.pm.ProviderInfo
31
+ import android.content.pm.ResolveInfo
32
+ import android.content.pm.ServiceInfo
33
+ import android.os.Build
25
34
import com.tencent.shadow.core.runtime.PluginPackageManager
26
35
27
36
@SuppressLint(" WrongConstant" )
@@ -41,13 +50,28 @@ internal class PluginPackageManagerImpl(
41
50
override fun getPackageInfo (packageName : String , flags : Int ): PackageInfo ? {
42
51
val hostPackageInfo = hostPackageManager.getPackageInfo(packageName, flags)
43
52
return if (packageName.isPlugin()) {
44
- val packageInfo = hostPackageManager.getPackageArchiveInfo(pluginArchiveFilePath, flags)
45
- if (packageInfo != null ) {
46
- packageInfo.applicationInfo = getPluginApplicationInfo(flags)
47
- packageInfo.permissions = hostPackageInfo.permissions
48
- packageInfo.requestedPermissions = hostPackageInfo.requestedPermissions
49
- }
50
- packageInfo
53
+ getPluginPackageInfo(flags, hostPackageInfo)
54
+ } else {
55
+ hostPackageInfo
56
+ }
57
+ }
58
+
59
+ private fun getPluginPackageInfo (flags : Int , hostPackageInfo : PackageInfo ): PackageInfo ? {
60
+ return hostPackageManager.getPackageArchiveInfo(pluginArchiveFilePath, flags)?.apply {
61
+ applicationInfo = getPluginApplicationInfo(flags)
62
+ permissions = hostPackageInfo.permissions
63
+ requestedPermissions = hostPackageInfo.requestedPermissions
64
+ }
65
+ }
66
+
67
+ @TargetApi(Build .VERSION_CODES .TIRAMISU )
68
+ override fun getPackageInfo (
69
+ packageName : String ,
70
+ flags : PackageManager .PackageInfoFlags
71
+ ): PackageInfo ? {
72
+ val hostPackageInfo = hostPackageManager.getPackageInfo(packageName, flags)
73
+ return if (packageName.isPlugin()) {
74
+ getPluginPackageInfo(flags.value.toInt(), hostPackageInfo)
51
75
} else {
52
76
hostPackageInfo
53
77
}
0 commit comments