Loading Android.mk +2 −0 Original line number Diff line number Diff line Loading @@ -35,4 +35,6 @@ LOCAL_PRIVILEGED_MODULE := true LOCAL_PROGUARD_FLAG_FILES := proguard.flags include frameworks/base/packages/SettingsLib/common.mk include $(BUILD_PACKAGE) AndroidManifest.xml +3 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,9 @@ <uses-permission android:name="com.google.android.permission.INSTALL_WEARABLE_PACKAGES" /> <!-- Needed for passing extras with intent ACTION_SHOW_ADMIN_SUPPORT_DETAILS --> <uses-permission android:name="android.permission.MANAGE_DEVICE_ADMINS" /> <application android:label="@string/app_name" android:allowBackup="false" android:theme="@style/Theme.DialogWhenLarge" Loading src/com/android/packageinstaller/permission/ui/handheld/AppPermissionsFragment.java +11 −2 Original line number Diff line number Diff line Loading @@ -53,10 +53,13 @@ import com.android.packageinstaller.permission.ui.OverlayTouchActivity; import com.android.packageinstaller.permission.utils.LocationUtils; import com.android.packageinstaller.permission.utils.SafetyNetLogger; import com.android.packageinstaller.permission.utils.Utils; import com.android.settingslib.RestrictedLockUtils; import java.util.ArrayList; import java.util.List; import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; public final class AppPermissionsFragment extends SettingsWithHeader implements OnPreferenceChangeListener { Loading Loading @@ -216,7 +219,7 @@ public final class AppPermissionsFragment extends SettingsWithHeader boolean isPlatform = group.getDeclaringPackage().equals(Utils.OS_PKG); SwitchPreference preference = new SwitchPreference(context); RestrictedSwitchPreference preference = new RestrictedSwitchPreference(context); preference.setOnPreferenceChangeListener(this); preference.setKey(group.getName()); Drawable icon = Utils.loadDrawable(context.getPackageManager(), Loading @@ -226,9 +229,15 @@ public final class AppPermissionsFragment extends SettingsWithHeader preference.setTitle(group.getLabel()); if (group.isPolicyFixed()) { preference.setSummary(getString(R.string.permission_summary_enforced_by_policy)); EnforcedAdmin admin = RestrictedLockUtils.getProfileOrDeviceOwnerOnCallingUser(context); if (admin != null) { preference.setDisabledByAdmin(admin); } else { preference.setEnabled(false); } } preference.setPersistent(false); preference.setEnabled(!group.isPolicyFixed()); preference.setChecked(group.areRuntimePermissionsGranted()); if (isPlatform) { Loading src/com/android/packageinstaller/permission/ui/handheld/PermissionAppsFragment.java +20 −6 Original line number Diff line number Diff line Loading @@ -47,10 +47,13 @@ import com.android.packageinstaller.permission.ui.OverlayTouchActivity; import com.android.packageinstaller.permission.utils.LocationUtils; import com.android.packageinstaller.permission.utils.SafetyNetLogger; import com.android.packageinstaller.permission.utils.Utils; import com.android.settingslib.RestrictedLockUtils; import java.util.ArrayList; import java.util.List; import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; public final class PermissionAppsFragment extends PermissionsFrameFragment implements Callback, Preference.OnPreferenceChangeListener { Loading Loading @@ -83,6 +86,8 @@ public final class PermissionAppsFragment extends PermissionsFrameFragment imple private Callback mOnPermissionsLoadedListener; private EnforcedAdmin mEnforcedAdmin; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Loading @@ -97,6 +102,7 @@ public final class PermissionAppsFragment extends PermissionsFrameFragment imple String groupName = getArguments().getString(Intent.EXTRA_PERMISSION_NAME); mPermissionApps = new PermissionApps(getActivity(), groupName, this); mPermissionApps.refresh(true); mEnforcedAdmin = RestrictedLockUtils.getProfileOrDeviceOwnerOnCallingUser(getActivity()); } @Override Loading Loading @@ -219,12 +225,16 @@ public final class PermissionAppsFragment extends PermissionsFrameFragment imple if (existingPref != null) { // If existing preference - only update its state. if (app.isPolicyFixed()) { existingPref.setSummary(getString( R.string.permission_summary_enforced_by_policy)); final boolean isPolicyFixed = app.isPolicyFixed(); if (!isTelevision && (existingPref instanceof RestrictedSwitchPreference)) { ((RestrictedSwitchPreference) existingPref).setDisabledByAdmin( isPolicyFixed ? mEnforcedAdmin : null); } else { existingPref.setEnabled(!isPolicyFixed); } existingPref.setSummary(isPolicyFixed ? getString(R.string.permission_summary_enforced_by_policy) : null); existingPref.setPersistent(false); existingPref.setEnabled(!app.isPolicyFixed()); if (existingPref instanceof SwitchPreference) { ((SwitchPreference) existingPref) .setChecked(app.areRuntimePermissionsGranted()); Loading @@ -232,16 +242,20 @@ public final class PermissionAppsFragment extends PermissionsFrameFragment imple continue; } SwitchPreference pref = new SwitchPreference(context); RestrictedSwitchPreference pref = new RestrictedSwitchPreference(context); pref.setOnPreferenceChangeListener(this); pref.setKey(app.getKey()); pref.setIcon(app.getIcon()); pref.setTitle(app.getLabel()); if (app.isPolicyFixed()) { pref.setSummary(getString(R.string.permission_summary_enforced_by_policy)); if (!isTelevision && mEnforcedAdmin != null) { pref.setDisabledByAdmin(mEnforcedAdmin); } else { pref.setEnabled(false); } } pref.setPersistent(false); pref.setEnabled(!app.isPolicyFixed()); pref.setChecked(app.areRuntimePermissionsGranted()); if (isSystemApp && isTelevision) { Loading src/com/android/packageinstaller/permission/ui/handheld/RestrictedSwitchPreference.java 0 → 100644 +79 −0 Original line number Diff line number Diff line /* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.packageinstaller.permission.ui.handheld; import android.content.Context; import android.preference.PreferenceScreen; import android.preference.SwitchPreference; import android.util.AttributeSet; import android.view.View; import android.widget.TextView; import com.android.packageinstaller.R; import com.android.settingslib.RestrictedLockUtils; import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; public class RestrictedSwitchPreference extends SwitchPreference { private final Context mContext; private boolean mDisabledByAdmin; private EnforcedAdmin mEnforcedAdmin; public RestrictedSwitchPreference(Context context) { super(context); mContext = context; } @Override public void onBindView(View view) { super.onBindView(view); final TextView textView = (TextView) view.findViewById(android.R.id.title); if (textView != null) { RestrictedLockUtils.setTextViewPadlock(mContext, textView, mDisabledByAdmin); if (mDisabledByAdmin) { view.setEnabled(true); } } } @Override public void setEnabled(boolean enabled) { if (enabled && mDisabledByAdmin) { setDisabledByAdmin(null); } else { super.setEnabled(enabled); } } public void setDisabledByAdmin(EnforcedAdmin admin) { final boolean disabled = (admin != null ? true : false); mEnforcedAdmin = admin; if (mDisabledByAdmin != disabled) { mDisabledByAdmin = disabled; setEnabled(!disabled); } } @Override public void performClick(PreferenceScreen preferenceScreen) { if (mDisabledByAdmin) { RestrictedLockUtils.sendShowAdminSupportDetailsIntent(mContext, mEnforcedAdmin); } else { super.performClick(preferenceScreen); } } } No newline at end of file Loading
Android.mk +2 −0 Original line number Diff line number Diff line Loading @@ -35,4 +35,6 @@ LOCAL_PRIVILEGED_MODULE := true LOCAL_PROGUARD_FLAG_FILES := proguard.flags include frameworks/base/packages/SettingsLib/common.mk include $(BUILD_PACKAGE)
AndroidManifest.xml +3 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,9 @@ <uses-permission android:name="com.google.android.permission.INSTALL_WEARABLE_PACKAGES" /> <!-- Needed for passing extras with intent ACTION_SHOW_ADMIN_SUPPORT_DETAILS --> <uses-permission android:name="android.permission.MANAGE_DEVICE_ADMINS" /> <application android:label="@string/app_name" android:allowBackup="false" android:theme="@style/Theme.DialogWhenLarge" Loading
src/com/android/packageinstaller/permission/ui/handheld/AppPermissionsFragment.java +11 −2 Original line number Diff line number Diff line Loading @@ -53,10 +53,13 @@ import com.android.packageinstaller.permission.ui.OverlayTouchActivity; import com.android.packageinstaller.permission.utils.LocationUtils; import com.android.packageinstaller.permission.utils.SafetyNetLogger; import com.android.packageinstaller.permission.utils.Utils; import com.android.settingslib.RestrictedLockUtils; import java.util.ArrayList; import java.util.List; import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; public final class AppPermissionsFragment extends SettingsWithHeader implements OnPreferenceChangeListener { Loading Loading @@ -216,7 +219,7 @@ public final class AppPermissionsFragment extends SettingsWithHeader boolean isPlatform = group.getDeclaringPackage().equals(Utils.OS_PKG); SwitchPreference preference = new SwitchPreference(context); RestrictedSwitchPreference preference = new RestrictedSwitchPreference(context); preference.setOnPreferenceChangeListener(this); preference.setKey(group.getName()); Drawable icon = Utils.loadDrawable(context.getPackageManager(), Loading @@ -226,9 +229,15 @@ public final class AppPermissionsFragment extends SettingsWithHeader preference.setTitle(group.getLabel()); if (group.isPolicyFixed()) { preference.setSummary(getString(R.string.permission_summary_enforced_by_policy)); EnforcedAdmin admin = RestrictedLockUtils.getProfileOrDeviceOwnerOnCallingUser(context); if (admin != null) { preference.setDisabledByAdmin(admin); } else { preference.setEnabled(false); } } preference.setPersistent(false); preference.setEnabled(!group.isPolicyFixed()); preference.setChecked(group.areRuntimePermissionsGranted()); if (isPlatform) { Loading
src/com/android/packageinstaller/permission/ui/handheld/PermissionAppsFragment.java +20 −6 Original line number Diff line number Diff line Loading @@ -47,10 +47,13 @@ import com.android.packageinstaller.permission.ui.OverlayTouchActivity; import com.android.packageinstaller.permission.utils.LocationUtils; import com.android.packageinstaller.permission.utils.SafetyNetLogger; import com.android.packageinstaller.permission.utils.Utils; import com.android.settingslib.RestrictedLockUtils; import java.util.ArrayList; import java.util.List; import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; public final class PermissionAppsFragment extends PermissionsFrameFragment implements Callback, Preference.OnPreferenceChangeListener { Loading Loading @@ -83,6 +86,8 @@ public final class PermissionAppsFragment extends PermissionsFrameFragment imple private Callback mOnPermissionsLoadedListener; private EnforcedAdmin mEnforcedAdmin; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Loading @@ -97,6 +102,7 @@ public final class PermissionAppsFragment extends PermissionsFrameFragment imple String groupName = getArguments().getString(Intent.EXTRA_PERMISSION_NAME); mPermissionApps = new PermissionApps(getActivity(), groupName, this); mPermissionApps.refresh(true); mEnforcedAdmin = RestrictedLockUtils.getProfileOrDeviceOwnerOnCallingUser(getActivity()); } @Override Loading Loading @@ -219,12 +225,16 @@ public final class PermissionAppsFragment extends PermissionsFrameFragment imple if (existingPref != null) { // If existing preference - only update its state. if (app.isPolicyFixed()) { existingPref.setSummary(getString( R.string.permission_summary_enforced_by_policy)); final boolean isPolicyFixed = app.isPolicyFixed(); if (!isTelevision && (existingPref instanceof RestrictedSwitchPreference)) { ((RestrictedSwitchPreference) existingPref).setDisabledByAdmin( isPolicyFixed ? mEnforcedAdmin : null); } else { existingPref.setEnabled(!isPolicyFixed); } existingPref.setSummary(isPolicyFixed ? getString(R.string.permission_summary_enforced_by_policy) : null); existingPref.setPersistent(false); existingPref.setEnabled(!app.isPolicyFixed()); if (existingPref instanceof SwitchPreference) { ((SwitchPreference) existingPref) .setChecked(app.areRuntimePermissionsGranted()); Loading @@ -232,16 +242,20 @@ public final class PermissionAppsFragment extends PermissionsFrameFragment imple continue; } SwitchPreference pref = new SwitchPreference(context); RestrictedSwitchPreference pref = new RestrictedSwitchPreference(context); pref.setOnPreferenceChangeListener(this); pref.setKey(app.getKey()); pref.setIcon(app.getIcon()); pref.setTitle(app.getLabel()); if (app.isPolicyFixed()) { pref.setSummary(getString(R.string.permission_summary_enforced_by_policy)); if (!isTelevision && mEnforcedAdmin != null) { pref.setDisabledByAdmin(mEnforcedAdmin); } else { pref.setEnabled(false); } } pref.setPersistent(false); pref.setEnabled(!app.isPolicyFixed()); pref.setChecked(app.areRuntimePermissionsGranted()); if (isSystemApp && isTelevision) { Loading
src/com/android/packageinstaller/permission/ui/handheld/RestrictedSwitchPreference.java 0 → 100644 +79 −0 Original line number Diff line number Diff line /* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.packageinstaller.permission.ui.handheld; import android.content.Context; import android.preference.PreferenceScreen; import android.preference.SwitchPreference; import android.util.AttributeSet; import android.view.View; import android.widget.TextView; import com.android.packageinstaller.R; import com.android.settingslib.RestrictedLockUtils; import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; public class RestrictedSwitchPreference extends SwitchPreference { private final Context mContext; private boolean mDisabledByAdmin; private EnforcedAdmin mEnforcedAdmin; public RestrictedSwitchPreference(Context context) { super(context); mContext = context; } @Override public void onBindView(View view) { super.onBindView(view); final TextView textView = (TextView) view.findViewById(android.R.id.title); if (textView != null) { RestrictedLockUtils.setTextViewPadlock(mContext, textView, mDisabledByAdmin); if (mDisabledByAdmin) { view.setEnabled(true); } } } @Override public void setEnabled(boolean enabled) { if (enabled && mDisabledByAdmin) { setDisabledByAdmin(null); } else { super.setEnabled(enabled); } } public void setDisabledByAdmin(EnforcedAdmin admin) { final boolean disabled = (admin != null ? true : false); mEnforcedAdmin = admin; if (mDisabledByAdmin != disabled) { mDisabledByAdmin = disabled; setEnabled(!disabled); } } @Override public void performClick(PreferenceScreen preferenceScreen) { if (mDisabledByAdmin) { RestrictedLockUtils.sendShowAdminSupportDetailsIntent(mContext, mEnforcedAdmin); } else { super.performClick(preferenceScreen); } } } No newline at end of file