Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f75c68ad authored by Joel Galenson's avatar Joel Galenson
Browse files

Improve links in AppPermissionFragment.

Show the links when Permissions Hub is disabled.

Disable a link if it would take us back to the caller.

Fixes: 131923747
Test: Open screen from four callers and see correct links with
Permissions Hub enabled and disabled.
Change-Id: I421ccce14e5880b308a5ad079645fd2ca0b2631b
parent 79c6f82e
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -92,7 +92,6 @@
            </LinearLayout>

            <LinearLayout
                android:id="@+id/footer_all"
                style="@style/AppPermissionFooter">

                <View
+6 −1
Original line number Diff line number Diff line
@@ -38,6 +38,9 @@ import com.android.packageinstaller.permission.utils.Utils;
public final class AppPermissionActivity extends FragmentActivity {
    private static final String LOG_TAG = AppPermissionActivity.class.getSimpleName();

    public static final String EXTRA_CALLER_NAME =
            "com.android.packageinstaller.extra.CALLER_NAME";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
@@ -83,8 +86,10 @@ public final class AppPermissionActivity extends FragmentActivity {
            return;
        }

        String caller = getIntent().getStringExtra(EXTRA_CALLER_NAME);

        Fragment androidXFragment = AppPermissionFragment.newInstance(packageName, permissionName,
                groupName, userHandle);
                groupName, userHandle, caller);

        getSupportFragmentManager().beginTransaction().replace(android.R.id.content,
                    androidXFragment).commit();
+14 −6
Original line number Diff line number Diff line
@@ -55,6 +55,7 @@ import androidx.fragment.app.Fragment;
import com.android.packageinstaller.permission.model.AppPermissionGroup;
import com.android.packageinstaller.permission.model.Permission;
import com.android.packageinstaller.permission.model.PermissionUsages;
import com.android.packageinstaller.permission.ui.AppPermissionActivity;
import com.android.packageinstaller.permission.utils.LocationUtils;
import com.android.packageinstaller.permission.utils.PackageRemovalMonitor;
import com.android.packageinstaller.permission.utils.SafetyNetLogger;
@@ -111,7 +112,8 @@ public class AppPermissionFragment extends SettingsWithLargeHeader {
     * @return A new fragment
     */
    public static @NonNull AppPermissionFragment newInstance(@NonNull String packageName,
            @NonNull String permName, @Nullable String groupName, @NonNull UserHandle userHandle) {
            @NonNull String permName, @Nullable String groupName, @NonNull UserHandle userHandle,
            @Nullable String caller) {
        AppPermissionFragment fragment = new AppPermissionFragment();
        Bundle arguments = new Bundle();
        arguments.putString(Intent.EXTRA_PACKAGE_NAME, packageName);
@@ -121,6 +123,7 @@ public class AppPermissionFragment extends SettingsWithLargeHeader {
            arguments.putString(Intent.EXTRA_PERMISSION_GROUP_NAME, groupName);
        }
        arguments.putParcelable(Intent.EXTRA_USER, userHandle);
        arguments.putString(AppPermissionActivity.EXTRA_CALLER_NAME, caller);
        fragment.setArguments(arguments);
        return fragment;
    }
@@ -192,7 +195,9 @@ public class AppPermissionFragment extends SettingsWithLargeHeader {
        ((TextView) root.requireViewById(R.id.permission_message)).setText(
                context.getString(R.string.app_permission_header, mGroup.getLabel()));

        if (Utils.isModernPermissionGroup(mGroup.getName())) {
        if (!Utils.isPermissionsHubEnabled()) {
            root.requireViewById(R.id.usage_summary).setVisibility(View.GONE);
        } else if (Utils.isModernPermissionGroup(mGroup.getName())) {
            if (!Utils.shouldShowPermissionUsage(mGroup.getName())) {
                ((TextView) root.requireViewById(R.id.usage_summary)).setText(
                        context.getString(R.string.app_permission_footer_not_available));
@@ -224,6 +229,13 @@ public class AppPermissionFragment extends SettingsWithLargeHeader {
            context.startActivity(intent);
        });

        String caller = getArguments().getString(AppPermissionActivity.EXTRA_CALLER_NAME);
        if (AppPermissionsFragment.class.getName().equals(caller)) {
            footer1Link.setVisibility(View.GONE);
        } else if (PermissionAppsFragment.class.getName().equals(caller)) {
            footer2Link.setVisibility(View.GONE);
        }

        mRadioGroup = root.requireViewById(R.id.radiogroup);
        mAlwaysButton = root.requireViewById(R.id.allow_radio_button);
        mForegroundOnlyButton = root.requireViewById(R.id.foreground_only_radio_button);
@@ -234,10 +246,6 @@ public class AppPermissionFragment extends SettingsWithLargeHeader {

        mNestedScrollView = root.requireViewById(R.id.nested_scroll_view);

        if (!Utils.isPermissionsHubEnabled()) {
            root.requireViewById(R.id.footer_all).setVisibility(View.GONE);
        }

        return root;
    }

+1 −1
Original line number Diff line number Diff line
@@ -224,7 +224,7 @@ public final class AppPermissionsFragment extends SettingsWithLargeHeader {
            boolean isPlatform = group.getDeclaringPackage().equals(Utils.OS_PKG);

            PermissionControlPreference preference = new PermissionControlPreference(context,
                    group);
                    group, AppPermissionsFragment.class.getName());
            preference.setKey(group.getName());
            Drawable icon = Utils.loadDrawable(context.getPackageManager(),
                    group.getIconPkg(), group.getIconResId());
+2 −1
Original line number Diff line number Diff line
@@ -301,7 +301,8 @@ public final class PermissionAppsFragment extends SettingsWithLargeHeader implem
                continue;
            }

            PermissionControlPreference pref = new PermissionControlPreference(context, group);
            PermissionControlPreference pref = new PermissionControlPreference(context, group,
                    PermissionAppsFragment.class.getName());
            pref.setKey(key);
            pref.setIcon(app.getIcon());
            pref.setTitle(Utils.getFullAppLabel(app.getAppInfo(), context));
Loading