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:
@@ -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>
|
||||||
|
|||||||
@@ -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(
|
||||||
|
|||||||
Reference in New Issue
Block a user