Fix opening module settings

This commit is contained in:
Nullptr 2022-10-21 20:11:37 +08:00
parent 667ac6282f
commit 1f23d8a995
No known key found for this signature in database
2 changed files with 23 additions and 6 deletions

View File

@ -51,11 +51,11 @@ fun ModuleManageBody() {
key = { it.first.app.packageName } key = { it.first.app.packageName }
) { ) {
var expanded by remember { mutableStateOf(false) } var expanded by remember { mutableStateOf(false) }
val launchIntent = remember { LSPPackageManager.getLaunchIntentForPackage(it.first.app.packageName) } val settingsIntent = remember { LSPPackageManager.getSettingsIntent(it.first.app.packageName) }
AnywhereDropdown( AnywhereDropdown(
expanded = expanded, expanded = expanded,
onDismissRequest = { expanded = false }, onDismissRequest = { expanded = false },
onClick = { launchIntent?.let { context.startActivity(it) } }, onClick = { settingsIntent?.let { context.startActivity(it) } },
onLongClick = { expanded = true }, onLongClick = { expanded = true },
surface = { surface = {
AppItem( AppItem(
@ -85,10 +85,10 @@ fun ModuleManageBody() {
text = { Text(text = it.first.label, color = MaterialTheme.colorScheme.primary) }, text = { Text(text = it.first.label, color = MaterialTheme.colorScheme.primary) },
onClick = {}, enabled = false onClick = {}, enabled = false
) )
if (launchIntent != null) { if (settingsIntent != null) {
DropdownMenuItem( DropdownMenuItem(
text = { Text(stringResource(R.string.manage_module_settings)) }, text = { Text(stringResource(R.string.manage_module_settings)) },
onClick = { context.startActivity(launchIntent) } onClick = { context.startActivity(settingsIntent) }
) )
} }
DropdownMenuItem( DropdownMenuItem(

View File

@ -34,6 +34,9 @@ import kotlin.coroutines.suspendCoroutine
object LSPPackageManager { object LSPPackageManager {
private const val TAG = "LSPPackageManager" private const val TAG = "LSPPackageManager"
private const val SETTINGS_CATEGORY = "de.robv.android.xposed.category.MODULE_SETTINGS"
const val STATUS_USER_CANCELLED = -2
@Parcelize @Parcelize
class AppInfo(val app: ApplicationInfo, val label: String) : Parcelable { class AppInfo(val app: ApplicationInfo, val label: String) : Parcelable {
@ -41,8 +44,6 @@ object LSPPackageManager {
get() = app.metaData?.get("xposedminversion") != null get() = app.metaData?.get("xposedminversion") != null
} }
const val STATUS_USER_CANCELLED = -2
var appList by mutableStateOf(listOf<AppInfo>()) var appList by mutableStateOf(listOf<AppInfo>())
private set private set
@ -210,4 +211,20 @@ object LSPPackageManager {
ris[0].activityInfo.name ris[0].activityInfo.name
) )
} }
fun getSettingsIntent(packageName: String): Intent? {
val intentToResolve = Intent(Intent.ACTION_MAIN)
intentToResolve.addCategory(SETTINGS_CATEGORY)
intentToResolve.setPackage(packageName)
val ris = lspApp.packageManager.queryIntentActivities(intentToResolve, 0)
if (ris.size <= 0) return getLaunchIntentForPackage(packageName)
return Intent(intentToResolve)
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.setClassName(
ris[0].activityInfo.packageName,
ris[0].activityInfo.name
)
}
} }