@@ -7,7 +7,6 @@ import android.content.pm.ActivityInfo
7
7
import android.content.pm.PackageManager
8
8
import android.net.Uri
9
9
import android.provider.Settings
10
- import android.widget.Toast
11
10
import androidx.annotation.ArrayRes
12
11
import im.angry.easyeuicc.R
13
12
import im.angry.openeuicc.core.EuiccChannelManager
@@ -32,9 +31,10 @@ class SIMToolkit(private val context: Context) {
32
31
data class Slot (private val packageManager : PackageManager , private val components : Set <ComponentName >) {
33
32
private val packageNames: Iterable <String >
34
33
get() = components.map(ComponentName ::getPackageName).toSet()
34
+ .filter(packageManager::isInstalledApp)
35
35
36
36
private val launchIntent: Intent ?
37
- get() = packageNames.firstNotNullOfOrNull(packageManager::getLaunchIntent )
37
+ get() = packageNames.firstNotNullOfOrNull(packageManager::getLaunchIntentForPackage )
38
38
39
39
private val activities: Iterable <ComponentName >
40
40
get() = packageNames.flatMap(packageManager::getActivities)
@@ -50,23 +50,23 @@ class SIMToolkit(private val context: Context) {
50
50
}
51
51
52
52
private fun getDisabledPackageIntent (): Intent ? {
53
- val disabledPackageName = packageNames.find {
54
- try {
55
- isDisabledState(packageManager.getApplicationEnabledSetting(it))
56
- } catch (_: IllegalArgumentException ) {
57
- false
58
- }
59
- }
60
- if (disabledPackageName == null ) return null
61
- return Intent (
62
- Settings .ACTION_APPLICATION_DETAILS_SETTINGS ,
63
- Uri .fromParts(" package" , disabledPackageName, null )
64
- )
53
+ val disabledPackageName = packageNames
54
+ .find { isDisabledState(packageManager.getApplicationEnabledSetting(it)) }
55
+ ? : return null
56
+ val uri = Uri .fromParts(" package" , disabledPackageName, null )
57
+ return Intent (Settings .ACTION_APPLICATION_DETAILS_SETTINGS , uri)
65
58
}
66
59
67
60
val intent: Intent ?
68
61
get() = getActivityIntent() ? : getDisabledPackageIntent()
69
62
}
63
+
64
+ companion object {
65
+ fun getDisabledPackageName (intent : Intent ? ): String? {
66
+ if (intent?.action != Settings .ACTION_APPLICATION_DETAILS_SETTINGS ) return null
67
+ return intent.data?.schemeSpecificPart
68
+ }
69
+ }
70
70
}
71
71
72
72
private fun isDisabledState (state : Int ) = when (state) {
@@ -75,15 +75,12 @@ private fun isDisabledState(state: Int) = when (state) {
75
75
else -> false
76
76
}
77
77
78
- private fun PackageManager.getLaunchIntent (packageName : String ) = try {
79
- getLaunchIntentForPackage(packageName)
78
+ private fun PackageManager.isInstalledApp (packageName : String ) = try {
79
+ getPackageInfo(packageName, 0 )
80
+ true
80
81
} catch (_: PackageManager .NameNotFoundException ) {
81
- null
82
+ false
82
83
}
83
84
84
- private fun PackageManager.getActivities (packageName : String ) = try {
85
- getPackageInfo(packageName, PackageManager .GET_ACTIVITIES )
86
- .activities?.toList() ? : emptyList()
87
- } catch (_: PackageManager .NameNotFoundException ) {
88
- emptyList()
89
- }
85
+ private fun PackageManager.getActivities (packageName : String ) =
86
+ getPackageInfo(packageName, PackageManager .GET_ACTIVITIES ).activities?.toList() ? : emptyList()
0 commit comments