Commit 468796c2 authored by vvb2060's avatar vvb2060 Committed by topjohnwu

Add option to show OS apps

parent 5833aade
package com.topjohnwu.magisk.ui.hide package com.topjohnwu.magisk.ui.hide
import android.annotation.SuppressLint
import android.content.pm.ApplicationInfo import android.content.pm.ApplicationInfo
import android.content.pm.PackageManager import android.content.pm.PackageManager
import androidx.databinding.Bindable import androidx.databinding.Bindable
...@@ -27,14 +28,20 @@ class HideViewModel : BaseViewModel(), Queryable { ...@@ -27,14 +28,20 @@ class HideViewModel : BaseViewModel(), Queryable {
@get:Bindable @get:Bindable
var isShowSystem = Config.showSystemApp var isShowSystem = Config.showSystemApp
set(value) = set(value, field, { field = it }, BR.showSystem){ set(value) = set(value, field, { field = it }, BR.showSystem) {
Config.showSystemApp = it Config.showSystemApp = it
submitQuery() submitQuery()
} }
@get:Bindable
var isShowOS = false
set(value) = set(value, field, { field = it }, BR.showOS) {
submitQuery()
}
@get:Bindable @get:Bindable
var query = "" var query = ""
set(value) = set(value, field, { field = it }, BR.query){ set(value) = set(value, field, { field = it }, BR.query) {
submitQuery() submitQuery()
} }
...@@ -46,6 +53,7 @@ class HideViewModel : BaseViewModel(), Queryable { ...@@ -46,6 +53,7 @@ class HideViewModel : BaseViewModel(), Queryable {
it.bindExtra(BR.viewModel, this) it.bindExtra(BR.viewModel, this)
} }
@SuppressLint("InlinedApi")
override fun refresh() = viewModelScope.launch { override fun refresh() = viewModelScope.launch {
if (!Utils.showSuperUser()) { if (!Utils.showSuperUser()) {
state = State.LOADING_FAILED state = State.LOADING_FAILED
...@@ -55,9 +63,9 @@ class HideViewModel : BaseViewModel(), Queryable { ...@@ -55,9 +63,9 @@ class HideViewModel : BaseViewModel(), Queryable {
val (apps, diff) = withContext(Dispatchers.Default) { val (apps, diff) = withContext(Dispatchers.Default) {
val pm = get<PackageManager>() val pm = get<PackageManager>()
val hides = Shell.su("magiskhide --ls").exec().out.map { HideTarget(it) } val hides = Shell.su("magiskhide --ls").exec().out.map { HideTarget(it) }
val apps = pm.getInstalledApplications(0) val apps = pm.getInstalledApplications(PackageManager.MATCH_UNINSTALLED_PACKAGES)
.asSequence() .asSequence()
.filter { it.enabled && it.uid >= 10000 && !blacklist.contains(it.packageName) } .filter { it.enabled && !blacklist.contains(it.packageName) }
.map { HideAppInfo(it, pm) } .map { HideAppInfo(it, pm) }
.map { createTarget(it, hides) } .map { createTarget(it, hides) }
.filter { it.processes.isNotEmpty() } .filter { it.processes.isNotEmpty() }
...@@ -88,8 +96,9 @@ class HideViewModel : BaseViewModel(), Queryable { ...@@ -88,8 +96,9 @@ class HideViewModel : BaseViewModel(), Queryable {
items.filter { items.filter {
fun showHidden() = it.itemsChecked != 0 fun showHidden() = it.itemsChecked != 0
fun filterSystem() = fun filterSystem() = isShowSystem || it.info.flags and ApplicationInfo.FLAG_SYSTEM == 0
isShowSystem || it.info.flags and ApplicationInfo.FLAG_SYSTEM == 0
fun filterOS() = (isShowSystem && isShowOS) || it.info.uid >= 10000
fun filterQuery(): Boolean { fun filterQuery(): Boolean {
fun inName() = it.info.label.contains(query, true) fun inName() = it.info.label.contains(query, true)
...@@ -98,7 +107,7 @@ class HideViewModel : BaseViewModel(), Queryable { ...@@ -98,7 +107,7 @@ class HideViewModel : BaseViewModel(), Queryable {
return inName() || inPackage() || inProcesses() return inName() || inPackage() || inProcesses()
} }
showHidden() || (filterSystem() && filterQuery()) showHidden() || (filterSystem() && filterOS() && filterQuery())
} }
state = State.LOADED state = State.LOADED
} }
...@@ -121,4 +130,3 @@ class HideViewModel : BaseViewModel(), Queryable { ...@@ -121,4 +130,3 @@ class HideViewModel : BaseViewModel(), Queryable {
) } ) }
} }
} }
...@@ -47,7 +47,7 @@ ...@@ -47,7 +47,7 @@
app:layout_constraintTop_toBottomOf="@+id/hide_filter_title_filter"> app:layout_constraintTop_toBottomOf="@+id/hide_filter_title_filter">
<com.google.android.material.chip.Chip <com.google.android.material.chip.Chip
android:id="@+id/hide_filter_chip" android:id="@+id/hide_filter_system_chip"
style="@style/Widget.MaterialComponents.Chip.Filter" style="@style/Widget.MaterialComponents.Chip.Filter"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
...@@ -60,6 +60,20 @@ ...@@ -60,6 +60,20 @@
app:chipBackgroundColor="?colorSurfaceVariant" app:chipBackgroundColor="?colorSurfaceVariant"
tools:checked="true" /> tools:checked="true" />
<com.google.android.material.chip.Chip
android:id="@+id/hide_filter_os_chip"
style="@style/Widget.MaterialComponents.Chip.Filter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="@={viewModel.showOS}"
android:nextFocusRight="@id/hide_filter_chip_data"
android:nextFocusDown="@id/hide_filter_search_field"
android:text="@string/show_os_app"
android:textAppearance="@style/AppearanceFoundation.Caption"
app:checkedIcon="@drawable/ic_check_md2"
app:chipBackgroundColor="?colorSurfaceVariant"
tools:checked="true" />
<com.google.android.material.chip.Chip <com.google.android.material.chip.Chip
android:id="@+id/hide_filter_chip_data" android:id="@+id/hide_filter_chip_data"
style="@style/Widget.MaterialComponents.Chip.Entry" style="@style/Widget.MaterialComponents.Chip.Entry"
...@@ -136,7 +150,7 @@ ...@@ -136,7 +150,7 @@
android:id="@+id/hide_filter_done" android:id="@+id/hide_filter_done"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:nextFocusLeft="@id/hide_filter_chip" android:nextFocusLeft="@id/hide_filter_system_chip"
app:backgroundTint="?colorPrimary" app:backgroundTint="?colorPrimary"
app:elevation="0dp" app:elevation="0dp"
app:fabSize="mini" app:fabSize="mini"
......
...@@ -102,6 +102,7 @@ ...@@ -102,6 +102,7 @@
<!-- MagiskHide --> <!-- MagiskHide -->
<string name="show_system_app">Show system apps</string> <string name="show_system_app">Show system apps</string>
<string name="show_os_app">Show OS apps</string>
<string name="hide_filter_hint">Filter by name</string> <string name="hide_filter_hint">Filter by name</string>
<string name="hide_scroll_up">Scroll up</string> <string name="hide_scroll_up">Scroll up</string>
<string name="hide_filters">Filters</string> <string name="hide_filters">Filters</string>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment