Loading src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionFragment.java +1 −0 Original line number Diff line number Diff line Loading @@ -151,6 +151,7 @@ public class AppPermissionFragment extends SettingsWithLargeHeader { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(true); ActionBar ab = getActivity().getActionBar(); if (ab != null) { Loading src/com/android/permissioncontroller/permission/ui/handheld/PermissionAppsFragment.java +8 −8 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import android.content.Intent; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.UserHandle; import android.util.ArrayMap; import android.util.Log; Loading Loading @@ -146,7 +147,7 @@ public final class PermissionAppsFragment extends SettingsWithLargeHeader { getActivity().invalidateOptionsMenu()); if (!mViewModel.arePackagesLoaded()) { Handler handler = new Handler(); Handler handler = new Handler(Looper.getMainLooper()); handler.postDelayed(() -> { if (!mViewModel.arePackagesLoaded()) { setLoading(true /* loading */, false /* animate */); Loading Loading @@ -311,22 +312,21 @@ public final class PermissionAppsFragment extends SettingsWithLargeHeader { Preference existingPref = existingPrefs.get(key); if (existingPref != null) { if (existingPref instanceof SmartIconLoadPackagePermissionPreference) { ((SmartIconLoadPackagePermissionPreference) existingPref).setGrantCategory( grantCategory.getCategoryName()); } category.addPreference(existingPref); continue; } SmartIconLoadPackagePermissionPreference pref = new SmartIconLoadPackagePermissionPreference(getActivity().getApplication(), packageName, user, context, mPermGroupName, PermissionAppsFragment.class.getName(), sessionId, grantCategory.getCategoryName()); packageName, user, context); pref.setKey(key); pref.setTitle(KotlinUtils.INSTANCE.getPackageLabel(getActivity().getApplication(), packageName, user)); pref.setOnPreferenceClickListener((Preference p) -> { mViewModel.navigateToAppPermission(this, packageName, user, sessionId, grantCategory.getCategoryName()); return true; }); category.addPreference(pref); if (!mViewModel.getCreationLogged()) { Loading src/com/android/permissioncontroller/permission/ui/handheld/PermissionAppsViewModel.kt +46 −4 Original line number Diff line number Diff line Loading @@ -18,23 +18,28 @@ package com.android.permissioncontroller.permission.ui.handheld import android.Manifest import android.app.Application import android.content.Intent import android.os.Bundle import android.os.UserHandle import androidx.fragment.app.Fragment import androidx.lifecycle.AbstractSavedStateViewModelFactory import androidx.lifecycle.MediatorLiveData import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.ViewModel import androidx.navigation.fragment.findNavController import androidx.savedstate.SavedStateRegistryOwner import com.android.permissioncontroller.R import com.android.permissioncontroller.permission.data.AllPackageInfosLiveData import com.android.permissioncontroller.permission.data.FullStoragePermissionAppsLiveData import com.android.permissioncontroller.permission.data.SinglePermGroupPackagesUiInfoLiveData import com.android.permissioncontroller.permission.data.get import com.android.permissioncontroller.permission.model.livedatatypes.AppPermGroupUiInfo.PermGrantState import com.android.permissioncontroller.permission.ui.Category import com.android.permissioncontroller.permission.ui.LocationProviderInterceptDialog import com.android.permissioncontroller.permission.ui.handheld.PermissionAppsViewModel.Companion.CREATION_LOGGED_KEY import com.android.permissioncontroller.permission.ui.handheld.PermissionAppsViewModel.Companion.HAS_SYSTEM_APPS_KEY import com.android.permissioncontroller.permission.ui.handheld.PermissionAppsViewModel.Companion.SHOULD_SHOW_SYSTEM_KEY import com.android.permissioncontroller.permission.ui.handheld.PermissionAppsViewModel.Companion.SHOW_ALWAYS_ALLOWED import com.android.permissioncontroller.permission.utils.LocationUtils /** * ViewModel for the PermissionAppsFragment. Has a liveData with all of the UI info for each Loading @@ -48,7 +53,7 @@ import com.android.permissioncontroller.permission.ui.handheld.PermissionAppsVie class PermissionAppsViewModel( private val state: SavedStateHandle, private val app: Application, groupName: String private val groupName: String ) : ViewModel() { companion object { Loading Loading @@ -189,6 +194,43 @@ class PermissionAppsViewModel( fun arePackagesLoaded(): Boolean { return AllPackageInfosLiveData.isInitialized } /** * Navigate to an AppPermissionFragment * * @param fragment The fragment attached to this ViewModel * @param packageName The package name we want to navigate to * @param user The user we want to navigate to the package of * @param sessionId The sessionId * @param grantCategory The grant state of the package and user */ fun navigateToAppPermission( fragment: Fragment, packageName: String, user: UserHandle, sessionId: Long, grantCategory: String ) { val activity = fragment.activity!! if (LocationUtils.isLocationGroupAndProvider( activity, groupName, packageName)) { val intent = Intent(activity, LocationProviderInterceptDialog::class.java) intent.putExtra(Intent.EXTRA_PACKAGE_NAME, packageName) activity.startActivityAsUser(intent, user) return } if (LocationUtils.isLocationGroupAndControllerExtraPackage( activity, groupName, packageName)) { // Redirect to location controller extra package settings. LocationUtils.startLocationControllerExtraPackageSettings(activity, user) return } val args = AppPermissionFragment.createArgs(packageName, null, groupName, user, PermissionAppsFragment::class.java.name, sessionId, grantCategory) fragment.findNavController().navigate(R.id.perm_apps_to_app, args) } } /** Loading src/com/android/permissioncontroller/permission/ui/handheld/SmartIconLoadPackagePermissionPreference.kt +1 −19 Original line number Diff line number Diff line Loading @@ -23,12 +23,10 @@ import android.text.TextUtils import android.view.View import android.widget.ImageView import android.widget.TextView import androidx.navigation.findNavController import androidx.preference.AndroidResources import androidx.preference.Preference import androidx.preference.PreferenceViewHolder import com.android.permissioncontroller.R import com.android.permissioncontroller.permission.ui.AppPermissionActivity import com.android.permissioncontroller.permission.utils.KotlinUtils /** Loading @@ -40,22 +38,12 @@ import com.android.permissioncontroller.permission.utils.KotlinUtils * @param packageName The name of the package whose icon this preference will retrieve * @param user The user whose package icon will be retrieved * @param context The current context * @param groupName The name of the permission group this Preference is showing for * @param caller The name of the caller of this constructor. See * @see AppPermissionActivity.EXTRA_CALLER_NAME * @param sessionId An int representing the current session * @param grantCategory The granted state of the app represented by this preference, will be * passed on to the App Permission Fragment */ open class SmartIconLoadPackagePermissionPreference @JvmOverloads constructor( private val app: Application, private val packageName: String, private val user: UserHandle, context: Context, private val groupName: String, private val caller: String, private val sessionId: Long = 0, var grantCategory: String context: Context ) : Preference(context) { /** Loading Loading @@ -85,11 +73,5 @@ open class SmartIconLoadPackagePermissionPreference @JvmOverloads constructor( if (imageFrame != null) { imageFrame.visibility = View.VISIBLE } setOnPreferenceClickListener { val args = AppPermissionFragment.createArgs(packageName, null, groupName, user, caller, sessionId, grantCategory) holder.itemView.findNavController().navigate(R.id.perm_apps_to_app, args) true } } } Loading
src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionFragment.java +1 −0 Original line number Diff line number Diff line Loading @@ -151,6 +151,7 @@ public class AppPermissionFragment extends SettingsWithLargeHeader { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(true); ActionBar ab = getActivity().getActionBar(); if (ab != null) { Loading
src/com/android/permissioncontroller/permission/ui/handheld/PermissionAppsFragment.java +8 −8 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import android.content.Intent; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.UserHandle; import android.util.ArrayMap; import android.util.Log; Loading Loading @@ -146,7 +147,7 @@ public final class PermissionAppsFragment extends SettingsWithLargeHeader { getActivity().invalidateOptionsMenu()); if (!mViewModel.arePackagesLoaded()) { Handler handler = new Handler(); Handler handler = new Handler(Looper.getMainLooper()); handler.postDelayed(() -> { if (!mViewModel.arePackagesLoaded()) { setLoading(true /* loading */, false /* animate */); Loading Loading @@ -311,22 +312,21 @@ public final class PermissionAppsFragment extends SettingsWithLargeHeader { Preference existingPref = existingPrefs.get(key); if (existingPref != null) { if (existingPref instanceof SmartIconLoadPackagePermissionPreference) { ((SmartIconLoadPackagePermissionPreference) existingPref).setGrantCategory( grantCategory.getCategoryName()); } category.addPreference(existingPref); continue; } SmartIconLoadPackagePermissionPreference pref = new SmartIconLoadPackagePermissionPreference(getActivity().getApplication(), packageName, user, context, mPermGroupName, PermissionAppsFragment.class.getName(), sessionId, grantCategory.getCategoryName()); packageName, user, context); pref.setKey(key); pref.setTitle(KotlinUtils.INSTANCE.getPackageLabel(getActivity().getApplication(), packageName, user)); pref.setOnPreferenceClickListener((Preference p) -> { mViewModel.navigateToAppPermission(this, packageName, user, sessionId, grantCategory.getCategoryName()); return true; }); category.addPreference(pref); if (!mViewModel.getCreationLogged()) { Loading
src/com/android/permissioncontroller/permission/ui/handheld/PermissionAppsViewModel.kt +46 −4 Original line number Diff line number Diff line Loading @@ -18,23 +18,28 @@ package com.android.permissioncontroller.permission.ui.handheld import android.Manifest import android.app.Application import android.content.Intent import android.os.Bundle import android.os.UserHandle import androidx.fragment.app.Fragment import androidx.lifecycle.AbstractSavedStateViewModelFactory import androidx.lifecycle.MediatorLiveData import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.ViewModel import androidx.navigation.fragment.findNavController import androidx.savedstate.SavedStateRegistryOwner import com.android.permissioncontroller.R import com.android.permissioncontroller.permission.data.AllPackageInfosLiveData import com.android.permissioncontroller.permission.data.FullStoragePermissionAppsLiveData import com.android.permissioncontroller.permission.data.SinglePermGroupPackagesUiInfoLiveData import com.android.permissioncontroller.permission.data.get import com.android.permissioncontroller.permission.model.livedatatypes.AppPermGroupUiInfo.PermGrantState import com.android.permissioncontroller.permission.ui.Category import com.android.permissioncontroller.permission.ui.LocationProviderInterceptDialog import com.android.permissioncontroller.permission.ui.handheld.PermissionAppsViewModel.Companion.CREATION_LOGGED_KEY import com.android.permissioncontroller.permission.ui.handheld.PermissionAppsViewModel.Companion.HAS_SYSTEM_APPS_KEY import com.android.permissioncontroller.permission.ui.handheld.PermissionAppsViewModel.Companion.SHOULD_SHOW_SYSTEM_KEY import com.android.permissioncontroller.permission.ui.handheld.PermissionAppsViewModel.Companion.SHOW_ALWAYS_ALLOWED import com.android.permissioncontroller.permission.utils.LocationUtils /** * ViewModel for the PermissionAppsFragment. Has a liveData with all of the UI info for each Loading @@ -48,7 +53,7 @@ import com.android.permissioncontroller.permission.ui.handheld.PermissionAppsVie class PermissionAppsViewModel( private val state: SavedStateHandle, private val app: Application, groupName: String private val groupName: String ) : ViewModel() { companion object { Loading Loading @@ -189,6 +194,43 @@ class PermissionAppsViewModel( fun arePackagesLoaded(): Boolean { return AllPackageInfosLiveData.isInitialized } /** * Navigate to an AppPermissionFragment * * @param fragment The fragment attached to this ViewModel * @param packageName The package name we want to navigate to * @param user The user we want to navigate to the package of * @param sessionId The sessionId * @param grantCategory The grant state of the package and user */ fun navigateToAppPermission( fragment: Fragment, packageName: String, user: UserHandle, sessionId: Long, grantCategory: String ) { val activity = fragment.activity!! if (LocationUtils.isLocationGroupAndProvider( activity, groupName, packageName)) { val intent = Intent(activity, LocationProviderInterceptDialog::class.java) intent.putExtra(Intent.EXTRA_PACKAGE_NAME, packageName) activity.startActivityAsUser(intent, user) return } if (LocationUtils.isLocationGroupAndControllerExtraPackage( activity, groupName, packageName)) { // Redirect to location controller extra package settings. LocationUtils.startLocationControllerExtraPackageSettings(activity, user) return } val args = AppPermissionFragment.createArgs(packageName, null, groupName, user, PermissionAppsFragment::class.java.name, sessionId, grantCategory) fragment.findNavController().navigate(R.id.perm_apps_to_app, args) } } /** Loading
src/com/android/permissioncontroller/permission/ui/handheld/SmartIconLoadPackagePermissionPreference.kt +1 −19 Original line number Diff line number Diff line Loading @@ -23,12 +23,10 @@ import android.text.TextUtils import android.view.View import android.widget.ImageView import android.widget.TextView import androidx.navigation.findNavController import androidx.preference.AndroidResources import androidx.preference.Preference import androidx.preference.PreferenceViewHolder import com.android.permissioncontroller.R import com.android.permissioncontroller.permission.ui.AppPermissionActivity import com.android.permissioncontroller.permission.utils.KotlinUtils /** Loading @@ -40,22 +38,12 @@ import com.android.permissioncontroller.permission.utils.KotlinUtils * @param packageName The name of the package whose icon this preference will retrieve * @param user The user whose package icon will be retrieved * @param context The current context * @param groupName The name of the permission group this Preference is showing for * @param caller The name of the caller of this constructor. See * @see AppPermissionActivity.EXTRA_CALLER_NAME * @param sessionId An int representing the current session * @param grantCategory The granted state of the app represented by this preference, will be * passed on to the App Permission Fragment */ open class SmartIconLoadPackagePermissionPreference @JvmOverloads constructor( private val app: Application, private val packageName: String, private val user: UserHandle, context: Context, private val groupName: String, private val caller: String, private val sessionId: Long = 0, var grantCategory: String context: Context ) : Preference(context) { /** Loading Loading @@ -85,11 +73,5 @@ open class SmartIconLoadPackagePermissionPreference @JvmOverloads constructor( if (imageFrame != null) { imageFrame.visibility = View.VISIBLE } setOnPreferenceClickListener { val args = AppPermissionFragment.createArgs(packageName, null, groupName, user, caller, sessionId, grantCategory) holder.itemView.findNavController().navigate(R.id.perm_apps_to_app, args) true } } }