Settings: HideDevStatus: Query all apps installed by any user [2/2]

* And set value for all user

Change-Id: I5750800d7cdec1cb36922fac09a9d3b797806e33
This commit is contained in:
someone5678
2023-10-23 21:46:18 +09:00
committed by Joey
parent 6f444282a1
commit eff5a9865a
2 changed files with 32 additions and 30 deletions

View File

@@ -204,4 +204,8 @@
<!-- Hide developer status --> <!-- Hide developer status -->
<string name="hide_developer_status_title">Hide developer status</string> <string name="hide_developer_status_title">Hide developer status</string>
<string name="hide_developer_status_summary">Hide developer status from apps</string> <string name="hide_developer_status_summary">Hide developer status from apps</string>
<!-- App search preference -->
<string name="search">Search</string>
<string name="search_apps">Search apps</string>
</resources> </resources>

View File

@@ -60,10 +60,7 @@ class HideDeveloperStatusSettings: Fragment(R.layout.hide_developer_status_layou
private lateinit var userManager: UserManager private lateinit var userManager: UserManager
private lateinit var userInfos: List<UserInfo> private lateinit var userInfos: List<UserInfo>
private val appBarLayout: AppBarLayout by lazy{ private var appBarLayout: AppBarLayout? = null
requireActivity().findViewById(R.id.app_bar)
}
private var searchText = "" private var searchText = ""
private var customFilter: ((PackageInfo) -> Boolean)? = null private var customFilter: ((PackageInfo) -> Boolean)? = null
private var comparator: ((PackageInfo, PackageInfo) -> Int)? = null private var comparator: ((PackageInfo, PackageInfo) -> Int)? = null
@@ -85,7 +82,8 @@ class HideDeveloperStatusSettings: Fragment(R.layout.hide_developer_status_layou
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setHasOptionsMenu(true) setHasOptionsMenu(true)
requireActivity().setTitle(getTitle()) requireActivity().setTitle(getTitle())
activityManager = requireContext().getSystemService(ActivityManager::class.java) appBarLayout = requireActivity().findViewById(R.id.app_bar)
activityManager = requireContext().getSystemService(ActivityManager::class.java) as ActivityManager
packageManager = requireContext().packageManager packageManager = requireContext().packageManager
packageList = packageManager.getInstalledPackages(PackageManager.MATCH_ANY_USER) packageList = packageManager.getInstalledPackages(PackageManager.MATCH_ANY_USER)
userManager = UserManager.get(requireContext()) userManager = UserManager.get(requireContext())
@@ -102,9 +100,9 @@ class HideDeveloperStatusSettings: Fragment(R.layout.hide_developer_status_layou
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
adapter = AppListAdapter() adapter = AppListAdapter()
recyclerView = view.findViewById<RecyclerView>(R.id.apps_list).also { recyclerView = view.findViewById<RecyclerView>(R.id.apps_list).also {
it.layoutManager = LinearLayoutManager(context) it!!.layoutManager = LinearLayoutManager(context)
it.adapter = adapter it!!.adapter = adapter
} } as RecyclerView
refreshList() refreshList()
} }
@@ -135,7 +133,7 @@ class HideDeveloperStatusSettings: Fragment(R.layout.hide_developer_status_layou
searchMenuItem.setOnActionExpandListener(object: MenuItem.OnActionExpandListener { searchMenuItem.setOnActionExpandListener(object: MenuItem.OnActionExpandListener {
override fun onMenuItemActionExpand(item: MenuItem): Boolean { override fun onMenuItemActionExpand(item: MenuItem): Boolean {
// To prevent a large space on tool bar. // To prevent a large space on tool bar.
appBarLayout.setExpanded(false /*expanded*/, false /*animate*/) appBarLayout!!.setExpanded(false /*expanded*/, false /*animate*/)
// To prevent user can expand the collapsing tool bar view. // To prevent user can expand the collapsing tool bar view.
ViewCompat.setNestedScrollingEnabled(recyclerView, false) ViewCompat.setNestedScrollingEnabled(recyclerView, false)
return true return true
@@ -143,7 +141,7 @@ class HideDeveloperStatusSettings: Fragment(R.layout.hide_developer_status_layou
override fun onMenuItemActionCollapse(item: MenuItem): Boolean { override fun onMenuItemActionCollapse(item: MenuItem): Boolean {
// We keep the collapsed status after user cancel the search function. // We keep the collapsed status after user cancel the search function.
appBarLayout.setExpanded(false /*expanded*/, false /*animate*/) appBarLayout!!.setExpanded(false /*expanded*/, false /*animate*/)
ViewCompat.setNestedScrollingEnabled(recyclerView, true) ViewCompat.setNestedScrollingEnabled(recyclerView, true)
return true return true
} }
@@ -207,7 +205,7 @@ class HideDeveloperStatusSettings: Fragment(R.layout.hide_developer_status_layou
} }
} }
try { try {
activityManager.forceStopPackage(packageName); activityManager.forceStopPackage(packageName)
} catch (ignored: Exception) { } catch (ignored: Exception) {
} }
} }
@@ -219,17 +217,17 @@ class HideDeveloperStatusSettings: Fragment(R.layout.hide_developer_status_layou
private fun refreshList() { private fun refreshList() {
var list = packageList.filter { var list = packageList.filter {
if (!showSystem) { if (!showSystem) {
!it.applicationInfo.isSystemApp() !it.applicationInfo!!.isSystemApp()
&& !resources.getStringArray( && !resources.getStringArray(
R.array.hide_developer_status_hidden_apps) R.array.hide_developer_status_hidden_apps)
.asList().contains(it.applicationInfo.packageName) .asList().contains(it.applicationInfo!!.packageName)
&& !it.applicationInfo.packageName.contains("android.settings") && !it.applicationInfo!!.packageName.contains("android.settings")
} else { } else {
!resources.getStringArray( !resources.getStringArray(
R.array.hide_developer_status_hidden_apps) R.array.hide_developer_status_hidden_apps)
.asList().contains(it.applicationInfo.packageName) .asList().contains(it.applicationInfo!!.packageName)
&& !it.applicationInfo.packageName.contains("android.settings") && !it.applicationInfo!!.packageName.contains("android.settings")
&& !it.applicationInfo.isResourceOverlay() && !it.applicationInfo!!.isResourceOverlay()
} }
}.filter { }.filter {
getLabel(it).contains(searchText, true) getLabel(it).contains(searchText, true)
@@ -251,11 +249,11 @@ class HideDeveloperStatusSettings: Fragment(R.layout.hide_developer_status_layou
AppInfo( AppInfo(
packageInfo.packageName, packageInfo.packageName,
getLabel(packageInfo), getLabel(packageInfo),
packageInfo.applicationInfo.loadIcon(packageManager), packageInfo.applicationInfo!!.loadIcon(packageManager),
) )
private fun getLabel(packageInfo: PackageInfo) = private fun getLabel(packageInfo: PackageInfo) =
packageInfo.applicationInfo.loadLabel(packageManager).toString() packageInfo.applicationInfo!!.loadLabel(packageManager).toString()
private inner class AppListAdapter: ListAdapter<AppInfo, AppListViewHolder>(itemCallback) { private inner class AppListAdapter: ListAdapter<AppInfo, AppListViewHolder>(itemCallback) {
private val selectedIndices = mutableSetOf<Int>() private val selectedIndices = mutableSetOf<Int>()
@@ -267,16 +265,16 @@ class HideDeveloperStatusSettings: Fragment(R.layout.hide_developer_status_layou
override fun onBindViewHolder(holder: AppListViewHolder, position: Int) { override fun onBindViewHolder(holder: AppListViewHolder, position: Int) {
getItem(position).let { getItem(position).let {
holder.label.text = it.label holder.label!!.text = it.label
holder.packageName.text = it.packageName holder.packageName!!.text = it.packageName
holder.icon.setImageDrawable(it.icon) holder.icon!!.setImageDrawable(it.icon)
holder.itemView.setOnClickListener { holder.itemView!!.setOnClickListener {
if (selectedIndices.contains(position)) { if (selectedIndices.contains(position)) {
selectedIndices.remove(position) selectedIndices.remove(position)
onListUpdate(holder.packageName.text.toString(), false) onListUpdate(holder.packageName!!.text.toString(), false)
} else { } else {
selectedIndices.add(position) selectedIndices.add(position)
onListUpdate(holder.packageName.text.toString(), true) onListUpdate(holder.packageName!!.text.toString(), true)
} }
notifyItemChanged(position) notifyItemChanged(position)
} }
@@ -284,7 +282,7 @@ class HideDeveloperStatusSettings: Fragment(R.layout.hide_developer_status_layou
initialList.remove(it.packageName) initialList.remove(it.packageName)
selectedIndices.add(position) selectedIndices.add(position)
} }
holder.checkBox.isChecked = selectedIndices.contains(position) holder.checkBox!!.isChecked = selectedIndices.contains(position)
} }
} }
@@ -296,10 +294,10 @@ class HideDeveloperStatusSettings: Fragment(R.layout.hide_developer_status_layou
} }
private class AppListViewHolder(itemView: View): RecyclerView.ViewHolder(itemView) { private class AppListViewHolder(itemView: View): RecyclerView.ViewHolder(itemView) {
val icon: ImageView = itemView.findViewById(R.id.icon) val icon: ImageView? = itemView.findViewById(R.id.icon)
val label: TextView = itemView.findViewById(R.id.label) val label: TextView? = itemView.findViewById(R.id.label)
val packageName: TextView = itemView.findViewById(R.id.packageName) val packageName: TextView? = itemView.findViewById(R.id.packageName)
val checkBox: CheckBox = itemView.findViewById(R.id.checkBox) val checkBox: CheckBox? = itemView.findViewById(R.id.checkBox)
} }
private data class AppInfo( private data class AppInfo(