Merge "Restrict MobileDataSlice" into main
This commit is contained in:
committed by
Android (Google) Code Review
commit
6b6b9c10ff
@@ -29,6 +29,7 @@ import android.database.ContentObserver;
|
||||
import android.net.Uri;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.os.UserManager;
|
||||
import android.provider.Settings;
|
||||
import android.telephony.SubscriptionInfo;
|
||||
import android.telephony.SubscriptionManager;
|
||||
@@ -79,19 +80,24 @@ public class MobileDataSlice implements CustomSliceable {
|
||||
|
||||
@Override
|
||||
public Slice getSlice() {
|
||||
ListBuilder listBuilder = createListBuilder();
|
||||
if (!isConfigMobileNetworksAllowed()) {
|
||||
return listBuilder.build();
|
||||
}
|
||||
|
||||
final IconCompat icon = IconCompat.createWithResource(mContext,
|
||||
R.drawable.ic_network_cell);
|
||||
final String title = mContext.getText(R.string.mobile_data_settings_title).toString();
|
||||
@ColorInt final int color = Utils.getColorAccentDefaultColor(mContext);
|
||||
|
||||
// Return null until we can show a disabled-action Slice, blaming Airplane mode.
|
||||
// Return empty slice until we can show a disabled-action Slice, blaming Airplane mode.
|
||||
if (isAirplaneModeEnabled()) {
|
||||
return null;
|
||||
return listBuilder.build();
|
||||
}
|
||||
|
||||
// Return null until we can show a disabled-action Slice.
|
||||
// Return empty slice until we can show a disabled-action Slice.
|
||||
if (!isMobileDataAvailable()) {
|
||||
return null;
|
||||
return listBuilder.build();
|
||||
}
|
||||
|
||||
final CharSequence summary = getSummary();
|
||||
@@ -109,11 +115,15 @@ public class MobileDataSlice implements CustomSliceable {
|
||||
rowBuilder.setSubtitle(summary);
|
||||
}
|
||||
|
||||
final ListBuilder listBuilder = new ListBuilder(mContext, getUri(),
|
||||
ListBuilder.INFINITY)
|
||||
return listBuilder
|
||||
.setAccentColor(color)
|
||||
.addRow(rowBuilder);
|
||||
return listBuilder.build();
|
||||
.addRow(rowBuilder)
|
||||
.build();
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
ListBuilder createListBuilder() {
|
||||
return new ListBuilder(mContext, getUri(), ListBuilder.INFINITY);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -211,6 +221,19 @@ public class MobileDataSlice implements CustomSliceable {
|
||||
return mTelephonyManager.isDataEnabled();
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
boolean isConfigMobileNetworksAllowed() {
|
||||
if (mContext == null) return true;
|
||||
UserManager userManager = mContext.getSystemService(UserManager.class);
|
||||
if (userManager == null) return true;
|
||||
boolean isAllowed = userManager.isAdminUser() && !userManager.hasUserRestriction(
|
||||
UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS);
|
||||
if (!isAllowed) {
|
||||
Log.w(TAG, "The user is not allowed to configure Mobile Networks.");
|
||||
}
|
||||
return isAllowed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Listener for mobile data state changes.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user