Fix opening module settings
This commit is contained in:
parent
667ac6282f
commit
1f23d8a995
|
|
@ -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(
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue