Move all custom slice uris to a registry class.
Change-Id: I192320f95ac81d14c8891ce2531d603912e59f56 Fixes: 119776308 Test: robotests
This commit is contained in:
@@ -20,7 +20,6 @@ import static android.app.slice.Slice.EXTRA_TOGGLE_STATE;
|
||||
import android.annotation.ColorInt;
|
||||
import android.app.PendingIntent;
|
||||
import android.bluetooth.BluetoothAdapter;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
@@ -37,6 +36,7 @@ import com.android.internal.logging.nano.MetricsProto;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.SubSettings;
|
||||
import com.android.settings.connecteddevice.BluetoothDashboardFragment;
|
||||
import com.android.settings.slices.CustomSliceRegistry;
|
||||
import com.android.settings.slices.SliceBroadcastReceiver;
|
||||
import com.android.settings.slices.SliceBuilderUtils;
|
||||
|
||||
@@ -47,16 +47,6 @@ public class BluetoothSliceBuilder {
|
||||
|
||||
private static final String TAG = "BluetoothSliceBuilder";
|
||||
|
||||
/**
|
||||
* Backing Uri for the Bluetooth Slice.
|
||||
*/
|
||||
public static final Uri BLUETOOTH_URI = new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSlicesContract.AUTHORITY)
|
||||
.appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
|
||||
.appendPath(SettingsSlicesContract.KEY_BLUETOOTH)
|
||||
.build();
|
||||
|
||||
/**
|
||||
* Action notifying a change on the BluetoothSlice.
|
||||
*/
|
||||
@@ -74,7 +64,7 @@ public class BluetoothSliceBuilder {
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a Bluetooth Slice bound to {@link #BLUETOOTH_URI}.
|
||||
* Return a Bluetooth Slice bound to {@link CustomSliceRegistry#BLUETOOTH_URI}.
|
||||
* <p>
|
||||
* Note that you should register a listener for {@link #INTENT_FILTER} to get changes for
|
||||
* Bluetooth.
|
||||
@@ -92,7 +82,7 @@ public class BluetoothSliceBuilder {
|
||||
final SliceAction toggleSliceAction = new SliceAction(toggleAction, null /* actionTitle */,
|
||||
isBluetoothEnabled);
|
||||
|
||||
return new ListBuilder(context, BLUETOOTH_URI, ListBuilder.INFINITY)
|
||||
return new ListBuilder(context, CustomSliceRegistry.BLUETOOTH_URI, ListBuilder.INFINITY)
|
||||
.setAccentColor(color)
|
||||
.addRow(new RowBuilder()
|
||||
.setTitle(title)
|
||||
|
||||
@@ -22,17 +22,14 @@ import static androidx.slice.builders.ListBuilder.ICON_IMAGE;
|
||||
|
||||
import android.annotation.ColorInt;
|
||||
import android.app.PendingIntent;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.hardware.camera2.CameraAccessException;
|
||||
import android.hardware.camera2.CameraCharacteristics;
|
||||
import android.hardware.camera2.CameraManager;
|
||||
import android.net.Uri;
|
||||
import android.provider.Settings;
|
||||
import android.provider.Settings.Secure;
|
||||
import android.provider.SettingsSlicesContract;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.core.graphics.drawable.IconCompat;
|
||||
@@ -43,7 +40,7 @@ import androidx.slice.builders.SliceAction;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.slices.SettingsSliceProvider;
|
||||
import com.android.settings.slices.CustomSliceRegistry;
|
||||
import com.android.settings.slices.SliceBroadcastReceiver;
|
||||
|
||||
|
||||
@@ -54,37 +51,23 @@ public class FlashlightSliceBuilder {
|
||||
|
||||
private static final String TAG = "FlashlightSliceBuilder";
|
||||
|
||||
public static final String KEY_FLASHLIGHT = "flashlight";
|
||||
|
||||
/**
|
||||
* Backing Uri for the Flashlight Slice.
|
||||
*/
|
||||
public static final Uri FLASHLIGHT_URI = new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
|
||||
.appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
|
||||
.appendPath(KEY_FLASHLIGHT)
|
||||
.build();
|
||||
|
||||
/**
|
||||
* Action notifying a change on the Flashlight Slice.
|
||||
*/
|
||||
public static final String ACTION_FLASHLIGHT_SLICE_CHANGED =
|
||||
"com.android.settings.flashlight.action.FLASHLIGHT_SLICE_CHANGED";
|
||||
"com.android.settings.flashlight.action.FLASHLIGHT_SLICE_CHANGED";
|
||||
|
||||
/**
|
||||
* Action broadcasting a change on whether flashlight is on or off.
|
||||
*/
|
||||
public static final String ACTION_FLASHLIGHT_CHANGED =
|
||||
"com.android.settings.flashlight.action.FLASHLIGHT_CHANGED";
|
||||
"com.android.settings.flashlight.action.FLASHLIGHT_CHANGED";
|
||||
|
||||
public static final IntentFilter INTENT_FILTER = new IntentFilter(ACTION_FLASHLIGHT_CHANGED);
|
||||
|
||||
private FlashlightSliceBuilder() {}
|
||||
private FlashlightSliceBuilder() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a Flashlight Slice bound to {@link #FLASHLIGHT_URI}.
|
||||
*/
|
||||
public static Slice getSlice(Context context) {
|
||||
if (!isFlashlightAvailable(context)) {
|
||||
return null;
|
||||
@@ -93,14 +76,15 @@ public class FlashlightSliceBuilder {
|
||||
@ColorInt final int color = Utils.getColorAccentDefaultColor(context);
|
||||
final IconCompat icon =
|
||||
IconCompat.createWithResource(context, R.drawable.ic_signal_flashlight);
|
||||
return new ListBuilder(context, FLASHLIGHT_URI, ListBuilder.INFINITY)
|
||||
.setAccentColor(color)
|
||||
.addRow(new RowBuilder()
|
||||
.setTitle(context.getText(R.string.power_flashlight))
|
||||
.setTitleItem(icon, ICON_IMAGE)
|
||||
.setPrimaryAction(
|
||||
new SliceAction(toggleAction, null, isFlashlightEnabled(context))))
|
||||
.build();
|
||||
return new ListBuilder(context, CustomSliceRegistry.FLASHLIGHT_SLICE_URI,
|
||||
ListBuilder.INFINITY)
|
||||
.setAccentColor(color)
|
||||
.addRow(new RowBuilder()
|
||||
.setTitle(context.getText(R.string.power_flashlight))
|
||||
.setTitleItem(icon, ICON_IMAGE)
|
||||
.setPrimaryAction(
|
||||
new SliceAction(toggleAction, null, isFlashlightEnabled(context))))
|
||||
.build();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -119,7 +103,7 @@ public class FlashlightSliceBuilder {
|
||||
} catch (CameraAccessException e) {
|
||||
Log.e(TAG, "Camera couldn't set torch mode.", e);
|
||||
}
|
||||
context.getContentResolver().notifyChange(FLASHLIGHT_URI, null);
|
||||
context.getContentResolver().notifyChange(CustomSliceRegistry.FLASHLIGHT_SLICE_URI, null);
|
||||
}
|
||||
|
||||
private static String getCameraId(Context context) throws CameraAccessException {
|
||||
@@ -130,7 +114,7 @@ public class FlashlightSliceBuilder {
|
||||
Boolean flashAvailable = c.get(CameraCharacteristics.FLASH_INFO_AVAILABLE);
|
||||
Integer lensFacing = c.get(CameraCharacteristics.LENS_FACING);
|
||||
if (flashAvailable != null && flashAvailable
|
||||
&& lensFacing != null && lensFacing == CameraCharacteristics.LENS_FACING_BACK) {
|
||||
&& lensFacing != null && lensFacing == CameraCharacteristics.LENS_FACING_BACK) {
|
||||
return id;
|
||||
}
|
||||
}
|
||||
@@ -141,16 +125,16 @@ public class FlashlightSliceBuilder {
|
||||
final Intent intent = new Intent(ACTION_FLASHLIGHT_SLICE_CHANGED);
|
||||
intent.setClass(context, SliceBroadcastReceiver.class);
|
||||
return PendingIntent.getBroadcast(context, 0 /* requestCode */, intent,
|
||||
PendingIntent.FLAG_CANCEL_CURRENT);
|
||||
PendingIntent.FLAG_CANCEL_CURRENT);
|
||||
}
|
||||
|
||||
private static boolean isFlashlightAvailable(Context context) {
|
||||
return Settings.Secure.getInt(
|
||||
context.getContentResolver(), Secure.FLASHLIGHT_AVAILABLE, 0) == 1;
|
||||
context.getContentResolver(), Secure.FLASHLIGHT_AVAILABLE, 0) == 1;
|
||||
}
|
||||
|
||||
private static boolean isFlashlightEnabled(Context context) {
|
||||
return Settings.Secure.getInt(
|
||||
context.getContentResolver(), Secure.FLASHLIGHT_ENABLED, 0) == 1;
|
||||
context.getContentResolver(), Secure.FLASHLIGHT_ENABLED, 0) == 1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,6 +42,9 @@ import java.util.Map;
|
||||
* Controller in charge of the battery tip group
|
||||
*/
|
||||
public class BatteryTipPreferenceController extends BasePreferenceController {
|
||||
|
||||
public static final String PREF_NAME = "battery_tip";
|
||||
|
||||
private static final String TAG = "BatteryTipPreferenceController";
|
||||
private static final int REQUEST_ANOMALY_ACTION = 0;
|
||||
private static final String KEY_BATTERY_TIPS = "key_battery_tips";
|
||||
|
||||
@@ -34,8 +34,7 @@ import androidx.annotation.NonNull;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
import androidx.slice.Slice;
|
||||
|
||||
import com.android.settings.homepage.contextualcards.slices.ConnectedDeviceSlice;
|
||||
import com.android.settings.wifi.WifiSlice;
|
||||
import com.android.settings.slices.CustomSliceRegistry;
|
||||
import com.android.settingslib.utils.AsyncLoaderCompat;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -170,8 +169,8 @@ public class ContextualCardLoader extends AsyncLoaderCompat<List<ContextualCard>
|
||||
|
||||
private int getNumberOfLargeCard(List<ContextualCard> cards) {
|
||||
return (int) cards.stream()
|
||||
.filter(card -> card.getSliceUri().equals(WifiSlice.WIFI_URI)
|
||||
|| card.getSliceUri().equals(ConnectedDeviceSlice.CONNECTED_DEVICE_URI))
|
||||
.filter(card -> card.getSliceUri().equals(CustomSliceRegistry.WIFI_SLICE_URI)
|
||||
|| card.getSliceUri().equals(CustomSliceRegistry.CONNECTED_DEVICE_SLICE_URI))
|
||||
.count();
|
||||
}
|
||||
|
||||
|
||||
@@ -16,16 +16,11 @@
|
||||
|
||||
package com.android.settings.homepage.contextualcards;
|
||||
|
||||
import static android.provider.SettingsSlicesContract.KEY_WIFI;
|
||||
|
||||
import android.annotation.Nullable;
|
||||
|
||||
import com.android.settings.homepage.contextualcards.slices.BatteryFixSlice;
|
||||
import com.android.settings.homepage.contextualcards.slices.ConnectedDeviceSlice;
|
||||
import com.android.settings.homepage.contextualcards.slices.LowStorageSlice;
|
||||
import com.android.settings.intelligence.ContextualCardProto.ContextualCard;
|
||||
import com.android.settings.intelligence.ContextualCardProto.ContextualCardList;
|
||||
import com.android.settings.wifi.WifiSlice;
|
||||
import com.android.settings.slices.CustomSliceRegistry;
|
||||
|
||||
import com.google.android.settings.intelligence.libs.contextualcards.ContextualCardProvider;
|
||||
|
||||
@@ -39,26 +34,26 @@ public class SettingsContextualCardProvider extends ContextualCardProvider {
|
||||
public ContextualCardList getContextualCards() {
|
||||
final ContextualCard wifiCard =
|
||||
ContextualCard.newBuilder()
|
||||
.setSliceUri(WifiSlice.WIFI_URI.toString())
|
||||
.setCardName(KEY_WIFI)
|
||||
.setSliceUri(CustomSliceRegistry.WIFI_SLICE_URI.toString())
|
||||
.setCardName(CustomSliceRegistry.WIFI_SLICE_URI.toString())
|
||||
.setCardCategory(ContextualCard.Category.IMPORTANT)
|
||||
.build();
|
||||
final ContextualCard connectedDeviceCard =
|
||||
ContextualCard.newBuilder()
|
||||
.setSliceUri(ConnectedDeviceSlice.CONNECTED_DEVICE_URI.toString())
|
||||
.setCardName(ConnectedDeviceSlice.PATH_CONNECTED_DEVICE)
|
||||
.setSliceUri(CustomSliceRegistry.CONNECTED_DEVICE_SLICE_URI.toString())
|
||||
.setCardName(CustomSliceRegistry.CONNECTED_DEVICE_SLICE_URI.toString())
|
||||
.setCardCategory(ContextualCard.Category.IMPORTANT)
|
||||
.build();
|
||||
final ContextualCard lowStorageCard =
|
||||
ContextualCard.newBuilder()
|
||||
.setSliceUri(LowStorageSlice.LOW_STORAGE_URI.toString())
|
||||
.setCardName(LowStorageSlice.PATH_LOW_STORAGE)
|
||||
.setSliceUri(CustomSliceRegistry.LOW_STORAGE_SLICE_URI.toString())
|
||||
.setCardName(CustomSliceRegistry.LOW_STORAGE_SLICE_URI.toString())
|
||||
.setCardCategory(ContextualCard.Category.IMPORTANT)
|
||||
.build();
|
||||
final ContextualCard batteryFixCard =
|
||||
ContextualCard.newBuilder()
|
||||
.setSliceUri(BatteryFixSlice.BATTERY_FIX_URI.toString())
|
||||
.setCardName(BatteryFixSlice.PATH_BATTERY_FIX)
|
||||
.setSliceUri(CustomSliceRegistry.BATTERY_FIX_SLICE_URI.toString())
|
||||
.setCardName(CustomSliceRegistry.BATTERY_FIX_SLICE_URI.toString())
|
||||
.setCardCategory(ContextualCard.Category.IMPORTANT)
|
||||
.build();
|
||||
final ContextualCardList cards = ContextualCardList.newBuilder()
|
||||
|
||||
@@ -16,8 +16,9 @@
|
||||
|
||||
package com.android.settings.homepage.contextualcards.deviceinfo;
|
||||
|
||||
import static com.android.settings.slices.CustomSliceRegistry.BATTERY_INFO_SLICE_URI;
|
||||
|
||||
import android.app.PendingIntent;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
@@ -37,7 +38,6 @@ import com.android.settings.Utils;
|
||||
import com.android.settings.fuelgauge.BatteryInfo;
|
||||
import com.android.settings.fuelgauge.PowerUsageSummary;
|
||||
import com.android.settings.slices.CustomSliceable;
|
||||
import com.android.settings.slices.SettingsSliceProvider;
|
||||
import com.android.settings.slices.SliceBuilderUtils;
|
||||
|
||||
/**
|
||||
@@ -46,20 +46,6 @@ import com.android.settings.slices.SliceBuilderUtils;
|
||||
public class BatterySlice implements CustomSliceable {
|
||||
private static final String TAG = "BatterySlice";
|
||||
|
||||
/**
|
||||
* The path denotes the unique name of battery slice.
|
||||
*/
|
||||
public static final String PATH_BATTERY_INFO = "battery_card";
|
||||
|
||||
/**
|
||||
* Backing Uri for the Battery Slice.
|
||||
*/
|
||||
public static final Uri BATTERY_CARD_URI = new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
|
||||
.appendPath(PATH_BATTERY_INFO)
|
||||
.build();
|
||||
|
||||
private final Context mContext;
|
||||
|
||||
private BatteryInfo mBatteryInfo;
|
||||
@@ -69,9 +55,6 @@ public class BatterySlice implements CustomSliceable {
|
||||
mContext = context;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a {@link BatterySlice} bound to {@link #BATTERY_CARD_URI}
|
||||
*/
|
||||
@Override
|
||||
public Slice getSlice() {
|
||||
if (mBatteryInfo == null) {
|
||||
@@ -82,7 +65,7 @@ public class BatterySlice implements CustomSliceable {
|
||||
R.drawable.ic_settings_battery);
|
||||
final CharSequence title = mContext.getText(R.string.power_usage_summary_title);
|
||||
final SliceAction primarySliceAction = new SliceAction(getPrimaryAction(), icon, title);
|
||||
final Slice slice = new ListBuilder(mContext, BATTERY_CARD_URI, ListBuilder.INFINITY)
|
||||
final Slice slice = new ListBuilder(mContext, BATTERY_INFO_SLICE_URI, ListBuilder.INFINITY)
|
||||
.setAccentColor(Utils.getColorAccentDefaultColor(mContext))
|
||||
.setHeader(new ListBuilder.HeaderBuilder().setTitle(title))
|
||||
.addRow(new ListBuilder.RowBuilder()
|
||||
@@ -97,7 +80,7 @@ public class BatterySlice implements CustomSliceable {
|
||||
|
||||
@Override
|
||||
public Uri getUri() {
|
||||
return BATTERY_CARD_URI;
|
||||
return BATTERY_INFO_SLICE_URI;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -108,12 +91,10 @@ public class BatterySlice implements CustomSliceable {
|
||||
@Override
|
||||
public Intent getIntent() {
|
||||
final String screenTitle = mContext.getText(R.string.power_usage_summary_title).toString();
|
||||
final Uri contentUri = new Uri.Builder().appendPath(PATH_BATTERY_INFO).build();
|
||||
return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
|
||||
PowerUsageSummary.class.getName(), PATH_BATTERY_INFO, screenTitle,
|
||||
PowerUsageSummary.class.getName(), "" /* key */, screenTitle,
|
||||
MetricsProto.MetricsEvent.SLICE)
|
||||
.setClassName(mContext.getPackageName(), SubSettings.class.getName())
|
||||
.setData(contentUri);
|
||||
.setClassName(mContext.getPackageName(), SubSettings.class.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
package com.android.settings.homepage.contextualcards.deviceinfo;
|
||||
|
||||
import android.app.PendingIntent;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
@@ -39,8 +38,8 @@ import com.android.settings.SubSettings;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.datausage.DataUsageSummary;
|
||||
import com.android.settings.datausage.DataUsageUtils;
|
||||
import com.android.settings.slices.CustomSliceRegistry;
|
||||
import com.android.settings.slices.CustomSliceable;
|
||||
import com.android.settings.slices.SettingsSliceProvider;
|
||||
import com.android.settings.slices.SliceBuilderUtils;
|
||||
import com.android.settingslib.net.DataUsageController;
|
||||
|
||||
@@ -50,19 +49,6 @@ public class DataUsageSlice implements CustomSliceable {
|
||||
private static final String TAG = "DataUsageSlice";
|
||||
private static final long MILLIS_IN_A_DAY = TimeUnit.DAYS.toMillis(1);
|
||||
|
||||
/**
|
||||
* The path denotes the unique name of data usage slice.
|
||||
*/
|
||||
public static final String PATH_DATA_USAGE = "data_usage_card";
|
||||
|
||||
/**
|
||||
* Backing Uri for the Data usage Slice.
|
||||
*/
|
||||
public static final Uri DATA_USAGE_CARD_URI = new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
|
||||
.appendPath(PATH_DATA_USAGE)
|
||||
.build();
|
||||
|
||||
private final Context mContext;
|
||||
|
||||
@@ -72,12 +58,9 @@ public class DataUsageSlice implements CustomSliceable {
|
||||
|
||||
@Override
|
||||
public Uri getUri() {
|
||||
return DATA_USAGE_CARD_URI;
|
||||
return CustomSliceRegistry.DATA_USAGE_SLICE_URI;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a Data usage Slice bound to {@link #DATA_USAGE_CARD_URI}
|
||||
*/
|
||||
@Override
|
||||
public Slice getSlice() {
|
||||
final IconCompat icon = IconCompat.createWithResource(mContext,
|
||||
@@ -87,7 +70,8 @@ public class DataUsageSlice implements CustomSliceable {
|
||||
final DataUsageController dataUsageController = new DataUsageController(mContext);
|
||||
final DataUsageController.DataUsageInfo info = dataUsageController.getDataUsageInfo();
|
||||
final ListBuilder listBuilder =
|
||||
new ListBuilder(mContext, DATA_USAGE_CARD_URI, ListBuilder.INFINITY)
|
||||
new ListBuilder(mContext, CustomSliceRegistry.DATA_USAGE_SLICE_URI,
|
||||
ListBuilder.INFINITY)
|
||||
.setAccentColor(Utils.getColorAccentDefaultColor(mContext))
|
||||
.setHeader(new ListBuilder.HeaderBuilder().setTitle(title));
|
||||
if (DataUsageUtils.hasSim(mContext)) {
|
||||
@@ -106,12 +90,10 @@ public class DataUsageSlice implements CustomSliceable {
|
||||
@Override
|
||||
public Intent getIntent() {
|
||||
final String screenTitle = mContext.getText(R.string.data_usage_wifi_title).toString();
|
||||
final Uri contentUri = new Uri.Builder().appendPath(PATH_DATA_USAGE).build();
|
||||
return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
|
||||
DataUsageSummary.class.getName(), PATH_DATA_USAGE, screenTitle,
|
||||
DataUsageSummary.class.getName(), "" /* key */, screenTitle,
|
||||
MetricsProto.MetricsEvent.SLICE)
|
||||
.setClassName(mContext.getPackageName(), SubSettings.class.getName())
|
||||
.setData(contentUri);
|
||||
.setClassName(mContext.getPackageName(), SubSettings.class.getName());
|
||||
}
|
||||
|
||||
private PendingIntent getPrimaryAction() {
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
package com.android.settings.homepage.contextualcards.deviceinfo;
|
||||
|
||||
import android.app.PendingIntent;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
@@ -39,8 +38,8 @@ import com.android.settings.SubSettings;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.deviceinfo.DeviceModelPreferenceController;
|
||||
import com.android.settings.deviceinfo.aboutphone.MyDeviceInfoFragment;
|
||||
import com.android.settings.slices.CustomSliceRegistry;
|
||||
import com.android.settings.slices.CustomSliceable;
|
||||
import com.android.settings.slices.SettingsSliceProvider;
|
||||
import com.android.settings.slices.SliceBuilderUtils;
|
||||
import com.android.settingslib.DeviceInfoUtils;
|
||||
|
||||
@@ -49,20 +48,6 @@ import java.util.List;
|
||||
public class DeviceInfoSlice implements CustomSliceable {
|
||||
private static final String TAG = "DeviceInfoSlice";
|
||||
|
||||
/**
|
||||
* The path denotes the unique name of device info slice
|
||||
*/
|
||||
public static final String PATH_DEVICE_INFO = "device_info_card";
|
||||
|
||||
/**
|
||||
* Backing Uri for the Device info Slice.
|
||||
*/
|
||||
public static final Uri DEVICE_INFO_CARD_URI = new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
|
||||
.appendPath(PATH_DEVICE_INFO)
|
||||
.build();
|
||||
|
||||
private final Context mContext;
|
||||
private final SubscriptionManager mSubscriptionManager;
|
||||
|
||||
@@ -71,16 +56,14 @@ public class DeviceInfoSlice implements CustomSliceable {
|
||||
mSubscriptionManager = mContext.getSystemService(SubscriptionManager.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a device info slice bound to {@Link #DEVICE_INFO_CARD_URI}
|
||||
*/
|
||||
@Override
|
||||
public Slice getSlice() {
|
||||
final IconCompat icon = IconCompat.createWithResource(mContext,
|
||||
R.drawable.ic_info_outline_24dp);
|
||||
final String title = mContext.getString(R.string.device_info_label);
|
||||
final SliceAction primaryAction = new SliceAction(getPrimaryAction(), icon, title);
|
||||
return new ListBuilder(mContext, DEVICE_INFO_CARD_URI, ListBuilder.INFINITY)
|
||||
return new ListBuilder(mContext, CustomSliceRegistry.DEVICE_INFO_SLICE_URI,
|
||||
ListBuilder.INFINITY)
|
||||
.setAccentColor((Utils.getColorAccentDefaultColor(mContext)))
|
||||
.setHeader(new ListBuilder.HeaderBuilder().setTitle(title))
|
||||
.addRow(new ListBuilder.RowBuilder()
|
||||
@@ -92,18 +75,16 @@ public class DeviceInfoSlice implements CustomSliceable {
|
||||
|
||||
@Override
|
||||
public Uri getUri() {
|
||||
return DEVICE_INFO_CARD_URI;
|
||||
return CustomSliceRegistry.DEVICE_INFO_SLICE_URI;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Intent getIntent() {
|
||||
final String screenTitle = mContext.getText(R.string.device_info_label).toString();
|
||||
final Uri contentUri = new Uri.Builder().appendPath(PATH_DEVICE_INFO).build();
|
||||
return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
|
||||
MyDeviceInfoFragment.class.getName(), PATH_DEVICE_INFO, screenTitle,
|
||||
MyDeviceInfoFragment.class.getName(), "" /* key */, screenTitle,
|
||||
MetricsProto.MetricsEvent.SLICE)
|
||||
.setClassName(mContext.getPackageName(), SubSettings.class.getName())
|
||||
.setData(contentUri);
|
||||
.setClassName(mContext.getPackageName(), SubSettings.class.getName());
|
||||
}
|
||||
|
||||
private PendingIntent getPrimaryAction() {
|
||||
|
||||
@@ -17,10 +17,8 @@
|
||||
package com.android.settings.homepage.contextualcards.deviceinfo;
|
||||
|
||||
import android.app.PendingIntent;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
|
||||
import androidx.core.graphics.drawable.IconCompat;
|
||||
import androidx.slice.Slice;
|
||||
@@ -28,39 +26,27 @@ import androidx.slice.builders.ListBuilder;
|
||||
import androidx.slice.builders.SliceAction;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.slices.SettingsSliceProvider;
|
||||
import com.android.settings.slices.CustomSliceRegistry;
|
||||
|
||||
// This is a slice helper class for EmergencyInfo
|
||||
public class EmergencyInfoSlice {
|
||||
/**
|
||||
* The path denotes the unique name of emergency info slice.
|
||||
*/
|
||||
public static final String PATH_EMERGENCY_INFO_CARD = "emergency_info_card";
|
||||
|
||||
/**
|
||||
* Backing Uri for the Emergency Info Slice.
|
||||
*/
|
||||
public static final Uri EMERGENCY_INFO_CARD_URI = new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
|
||||
.appendPath(PATH_EMERGENCY_INFO_CARD)
|
||||
.build();
|
||||
|
||||
private static final String ACTION_EDIT_EMERGENCY_INFO = "android.settings.EDIT_EMERGENCY_INFO";
|
||||
|
||||
public static Slice getSlice(Context context) {
|
||||
final ListBuilder listBuilder = new ListBuilder(context, EMERGENCY_INFO_CARD_URI,
|
||||
final ListBuilder listBuilder = new ListBuilder(context,
|
||||
CustomSliceRegistry.EMERGENCY_INFO_SLICE_URI,
|
||||
ListBuilder.INFINITY);
|
||||
listBuilder.addRow(
|
||||
new ListBuilder.RowBuilder()
|
||||
.setTitle(context.getText(R.string.emergency_info_title))
|
||||
.setSubtitle(
|
||||
context.getText(R.string.emergency_info_contextual_card_summary))
|
||||
.setPrimaryAction(generatePrimaryAction(context)));
|
||||
.setPrimaryAction(createPrimaryAction(context)));
|
||||
return listBuilder.build();
|
||||
}
|
||||
|
||||
private static SliceAction generatePrimaryAction(Context context) {
|
||||
private static SliceAction createPrimaryAction(Context context) {
|
||||
PendingIntent pendingIntent =
|
||||
PendingIntent.getActivity(
|
||||
context,
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
package com.android.settings.homepage.contextualcards.deviceinfo;
|
||||
|
||||
import android.app.PendingIntent;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
@@ -36,8 +35,8 @@ import com.android.settings.SubSettings;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.deviceinfo.StorageDashboardFragment;
|
||||
import com.android.settings.deviceinfo.storage.StorageSummaryDonutPreferenceController;
|
||||
import com.android.settings.slices.CustomSliceRegistry;
|
||||
import com.android.settings.slices.CustomSliceable;
|
||||
import com.android.settings.slices.SettingsSliceProvider;
|
||||
import com.android.settings.slices.SliceBuilderUtils;
|
||||
import com.android.settingslib.deviceinfo.PrivateStorageInfo;
|
||||
import com.android.settingslib.deviceinfo.StorageManagerVolumeProvider;
|
||||
@@ -45,20 +44,6 @@ import com.android.settingslib.deviceinfo.StorageManagerVolumeProvider;
|
||||
public class StorageSlice implements CustomSliceable {
|
||||
private static final String TAG = "StorageSlice";
|
||||
|
||||
/**
|
||||
* The path denotes the unique name of storage slicel
|
||||
*/
|
||||
public static final String PATH_STORAGE_INFO = "storage_card";
|
||||
|
||||
/**
|
||||
* Backing Uri for the storage slice.
|
||||
*/
|
||||
public static final Uri STORAGE_CARD_URI = new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
|
||||
.appendPath(PATH_STORAGE_INFO)
|
||||
.build();
|
||||
|
||||
private final Context mContext;
|
||||
|
||||
public StorageSlice(Context context) {
|
||||
@@ -67,12 +52,9 @@ public class StorageSlice implements CustomSliceable {
|
||||
|
||||
@Override
|
||||
public Uri getUri() {
|
||||
return STORAGE_CARD_URI;
|
||||
return CustomSliceRegistry.STORAGE_SLICE_URI;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a storage slice bound to {@link #STORAGE_CARD_URI}
|
||||
*/
|
||||
@Override
|
||||
public Slice getSlice() {
|
||||
final IconCompat icon = IconCompat.createWithResource(mContext,
|
||||
@@ -80,7 +62,8 @@ public class StorageSlice implements CustomSliceable {
|
||||
final String title = mContext.getString(R.string.storage_label);
|
||||
final SliceAction primaryAction = new SliceAction(getPrimaryAction(), icon, title);
|
||||
final PrivateStorageInfo info = getPrivateStorageInfo();
|
||||
return new ListBuilder(mContext, STORAGE_CARD_URI, ListBuilder.INFINITY)
|
||||
return new ListBuilder(mContext, CustomSliceRegistry.STORAGE_SLICE_URI,
|
||||
ListBuilder.INFINITY)
|
||||
.setAccentColor(Utils.getColorAccentDefaultColor(mContext))
|
||||
.setHeader(new ListBuilder.HeaderBuilder().setTitle(title))
|
||||
.addRow(new ListBuilder.RowBuilder()
|
||||
@@ -93,12 +76,10 @@ public class StorageSlice implements CustomSliceable {
|
||||
@Override
|
||||
public Intent getIntent() {
|
||||
final String screenTitle = mContext.getText(R.string.storage_label).toString();
|
||||
final Uri contentUri = new Uri.Builder().appendPath(PATH_STORAGE_INFO).build();
|
||||
return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
|
||||
StorageDashboardFragment.class.getName(), PATH_STORAGE_INFO, screenTitle,
|
||||
StorageDashboardFragment.class.getName(), "" /* key */, screenTitle,
|
||||
MetricsProto.MetricsEvent.SLICE)
|
||||
.setClassName(mContext.getPackageName(), SubSettings.class.getName())
|
||||
.setData(contentUri);
|
||||
.setClassName(mContext.getPackageName(), SubSettings.class.getName());
|
||||
}
|
||||
|
||||
private PendingIntent getPrimaryAction() {
|
||||
|
||||
@@ -19,7 +19,6 @@ package com.android.settings.homepage.contextualcards.slices;
|
||||
import static android.content.Context.MODE_PRIVATE;
|
||||
|
||||
import android.app.PendingIntent;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
@@ -34,7 +33,6 @@ import androidx.slice.builders.ListBuilder.RowBuilder;
|
||||
import androidx.slice.builders.SliceAction;
|
||||
|
||||
import com.android.internal.logging.nano.MetricsProto;
|
||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||
import com.android.internal.os.BatteryStatsHelper;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.SubSettings;
|
||||
@@ -42,9 +40,10 @@ import com.android.settings.Utils;
|
||||
import com.android.settings.fuelgauge.BatteryStatsHelperLoader;
|
||||
import com.android.settings.fuelgauge.PowerUsageSummary;
|
||||
import com.android.settings.fuelgauge.batterytip.BatteryTipLoader;
|
||||
import com.android.settings.fuelgauge.batterytip.BatteryTipPreferenceController;
|
||||
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
|
||||
import com.android.settings.slices.CustomSliceRegistry;
|
||||
import com.android.settings.slices.CustomSliceable;
|
||||
import com.android.settings.slices.SettingsSliceProvider;
|
||||
import com.android.settings.slices.SliceBackgroundWorker;
|
||||
import com.android.settings.slices.SliceBuilderUtils;
|
||||
import com.android.settingslib.utils.ThreadUtils;
|
||||
@@ -53,20 +52,6 @@ import java.util.List;
|
||||
|
||||
public class BatteryFixSlice implements CustomSliceable {
|
||||
|
||||
/**
|
||||
* Unique name of Battery Fix Slice.
|
||||
*/
|
||||
public static final String PATH_BATTERY_FIX = "battery_fix";
|
||||
|
||||
/**
|
||||
* Uri for Battery Fix Slice.
|
||||
*/
|
||||
public static final Uri BATTERY_FIX_URI = new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
|
||||
.appendPath(PATH_BATTERY_FIX)
|
||||
.build();
|
||||
|
||||
@VisibleForTesting
|
||||
static final String PREFS = "battery_fix_prefs";
|
||||
@VisibleForTesting
|
||||
@@ -82,12 +67,9 @@ public class BatteryFixSlice implements CustomSliceable {
|
||||
|
||||
@Override
|
||||
public Uri getUri() {
|
||||
return BATTERY_FIX_URI;
|
||||
return CustomSliceRegistry.BATTERY_FIX_SLICE_URI;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a Slice bound to {@link #BATTERY_FIX_URI}.
|
||||
*/
|
||||
@Override
|
||||
public Slice getSlice() {
|
||||
IconCompat icon;
|
||||
@@ -109,7 +91,8 @@ public class BatteryFixSlice implements CustomSliceable {
|
||||
primaryAction = new SliceAction(getPrimaryAction(),
|
||||
icon,
|
||||
batteryTip.getTitle(mContext));
|
||||
slice = new ListBuilder(mContext, BATTERY_FIX_URI, ListBuilder.INFINITY)
|
||||
slice = new ListBuilder(mContext, CustomSliceRegistry.BATTERY_FIX_SLICE_URI,
|
||||
ListBuilder.INFINITY)
|
||||
.setAccentColor(Utils.getColorAccentDefaultColor(mContext))
|
||||
.addRow(new RowBuilder()
|
||||
.setTitle(batteryTip.getTitle(mContext))
|
||||
@@ -125,7 +108,8 @@ public class BatteryFixSlice implements CustomSliceable {
|
||||
R.drawable.ic_battery_status_good_24dp);
|
||||
final String title = mContext.getString(R.string.power_usage_summary_title);
|
||||
primaryAction = new SliceAction(getPrimaryAction(), icon, title);
|
||||
slice = new ListBuilder(mContext, BATTERY_FIX_URI, ListBuilder.INFINITY)
|
||||
slice = new ListBuilder(mContext, CustomSliceRegistry.BATTERY_FIX_SLICE_URI,
|
||||
ListBuilder.INFINITY)
|
||||
.setAccentColor(Utils.getColorAccentDefaultColor(mContext))
|
||||
.addRow(new RowBuilder()
|
||||
.setTitle(title)
|
||||
@@ -140,10 +124,11 @@ public class BatteryFixSlice implements CustomSliceable {
|
||||
public Intent getIntent() {
|
||||
final String screenTitle = mContext.getText(R.string.power_usage_summary_title)
|
||||
.toString();
|
||||
final Uri contentUri = new Uri.Builder().appendPath(PATH_BATTERY_FIX).build();
|
||||
final Uri contentUri = new Uri.Builder()
|
||||
.appendPath(BatteryTipPreferenceController.PREF_NAME).build();
|
||||
|
||||
return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
|
||||
PowerUsageSummary.class.getName(), PATH_BATTERY_FIX,
|
||||
PowerUsageSummary.class.getName(), BatteryTipPreferenceController.PREF_NAME,
|
||||
screenTitle,
|
||||
MetricsProto.MetricsEvent.SLICE)
|
||||
.setClassName(mContext.getPackageName(), SubSettings.class.getName())
|
||||
|
||||
@@ -18,7 +18,6 @@ package com.android.settings.homepage.contextualcards.slices;
|
||||
|
||||
import android.app.PendingIntent;
|
||||
import android.bluetooth.BluetoothAdapter;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Bitmap;
|
||||
@@ -43,8 +42,8 @@ import com.android.settings.Utils;
|
||||
import com.android.settings.bluetooth.BluetoothDeviceDetailsFragment;
|
||||
import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment;
|
||||
import com.android.settings.core.SubSettingLauncher;
|
||||
import com.android.settings.slices.CustomSliceRegistry;
|
||||
import com.android.settings.slices.CustomSliceable;
|
||||
import com.android.settings.slices.SettingsSliceProvider;
|
||||
import com.android.settings.slices.SliceBuilderUtils;
|
||||
import com.android.settingslib.bluetooth.BluetoothUtils;
|
||||
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
|
||||
@@ -67,20 +66,6 @@ import java.util.stream.Collectors;
|
||||
*/
|
||||
public class ConnectedDeviceSlice implements CustomSliceable {
|
||||
|
||||
/**
|
||||
* The path denotes the unique name of Connected device Slice.
|
||||
*/
|
||||
public static final String PATH_CONNECTED_DEVICE = "connected_device";
|
||||
|
||||
/**
|
||||
* Backing Uri for Connected device Slice.
|
||||
*/
|
||||
public static final Uri CONNECTED_DEVICE_URI = new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
|
||||
.appendPath(PATH_CONNECTED_DEVICE)
|
||||
.build();
|
||||
|
||||
/**
|
||||
* To sort the Bluetooth devices by {@link CachedBluetoothDevice}.
|
||||
* Refer compareTo method from {@link com.android.settings.bluetooth.BluetoothDevicePreference}.
|
||||
@@ -109,12 +94,9 @@ public class ConnectedDeviceSlice implements CustomSliceable {
|
||||
|
||||
@Override
|
||||
public Uri getUri() {
|
||||
return CONNECTED_DEVICE_URI;
|
||||
return CustomSliceRegistry.CONNECTED_DEVICE_SLICE_URI;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a Connected Device Slice bound to {@link #CONNECTED_DEVICE_URI}.
|
||||
*/
|
||||
@Override
|
||||
public Slice getSlice() {
|
||||
final IconCompat icon = IconCompat.createWithResource(mContext,
|
||||
@@ -127,7 +109,8 @@ public class ConnectedDeviceSlice implements CustomSliceable {
|
||||
final SliceAction primarySliceAction = new SliceAction(primaryActionIntent, icon,
|
||||
title);
|
||||
final ListBuilder listBuilder =
|
||||
new ListBuilder(mContext, CONNECTED_DEVICE_URI, ListBuilder.INFINITY)
|
||||
new ListBuilder(mContext, CustomSliceRegistry.CONNECTED_DEVICE_SLICE_URI,
|
||||
ListBuilder.INFINITY)
|
||||
.setAccentColor(Utils.getColorAccentDefaultColor(mContext));
|
||||
|
||||
// Get row builders by connected devices, e.g. Bluetooth.
|
||||
@@ -159,14 +142,12 @@ public class ConnectedDeviceSlice implements CustomSliceable {
|
||||
public Intent getIntent() {
|
||||
final String screenTitle = mContext.getText(R.string.connected_devices_dashboard_title)
|
||||
.toString();
|
||||
final Uri contentUri = new Uri.Builder().appendPath(PATH_CONNECTED_DEVICE).build();
|
||||
|
||||
return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
|
||||
ConnectedDeviceDashboardFragment.class.getName(), PATH_CONNECTED_DEVICE,
|
||||
ConnectedDeviceDashboardFragment.class.getName(), "" /* key */,
|
||||
screenTitle,
|
||||
MetricsProto.MetricsEvent.SLICE)
|
||||
.setClassName(mContext.getPackageName(), SubSettings.class.getName())
|
||||
.setData(contentUri);
|
||||
.setClassName(mContext.getPackageName(), SubSettings.class.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
package com.android.settings.homepage.contextualcards.slices;
|
||||
|
||||
import android.app.PendingIntent;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
@@ -36,8 +35,8 @@ import com.android.settings.R;
|
||||
import com.android.settings.SubSettings;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.deviceinfo.StorageSettings;
|
||||
import com.android.settings.slices.CustomSliceRegistry;
|
||||
import com.android.settings.slices.CustomSliceable;
|
||||
import com.android.settings.slices.SettingsSliceProvider;
|
||||
import com.android.settings.slices.SliceBuilderUtils;
|
||||
import com.android.settingslib.deviceinfo.PrivateStorageInfo;
|
||||
import com.android.settingslib.deviceinfo.StorageManagerVolumeProvider;
|
||||
@@ -46,20 +45,6 @@ import java.text.NumberFormat;
|
||||
|
||||
public class LowStorageSlice implements CustomSliceable {
|
||||
|
||||
/**
|
||||
* The path denotes the unique name of Low storage Slice.
|
||||
*/
|
||||
public static final String PATH_LOW_STORAGE = "low_storage";
|
||||
|
||||
/**
|
||||
* Backing Uri for Low storage Slice.
|
||||
*/
|
||||
public static final Uri LOW_STORAGE_URI = new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
|
||||
.appendPath(PATH_LOW_STORAGE)
|
||||
.build();
|
||||
|
||||
private static final String TAG = "LowStorageSlice";
|
||||
|
||||
/**
|
||||
@@ -73,9 +58,6 @@ public class LowStorageSlice implements CustomSliceable {
|
||||
mContext = context;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a Low storage Slice bound to {@link #LOW_STORAGE_URI}
|
||||
*/
|
||||
@Override
|
||||
public Slice getSlice() {
|
||||
// Get current storage percentage from StorageManager.
|
||||
@@ -108,7 +90,8 @@ public class LowStorageSlice implements CustomSliceable {
|
||||
* Slices doesn't support "Icon on the left" in header. Now we intend to start with Icon
|
||||
* right aligned. Will update the icon to left until Slices support it.
|
||||
*/
|
||||
return new ListBuilder(mContext, LOW_STORAGE_URI, ListBuilder.INFINITY)
|
||||
return new ListBuilder(mContext, CustomSliceRegistry.LOW_STORAGE_SLICE_URI,
|
||||
ListBuilder.INFINITY)
|
||||
.setAccentColor(Utils.getColorAccentDefaultColor(mContext))
|
||||
.addRow(new RowBuilder()
|
||||
.setTitle(title)
|
||||
@@ -120,7 +103,7 @@ public class LowStorageSlice implements CustomSliceable {
|
||||
|
||||
@Override
|
||||
public Uri getUri() {
|
||||
return LOW_STORAGE_URI;
|
||||
return CustomSliceRegistry.LOW_STORAGE_SLICE_URI;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -132,13 +115,11 @@ public class LowStorageSlice implements CustomSliceable {
|
||||
public Intent getIntent() {
|
||||
final String screenTitle = mContext.getText(R.string.storage_label)
|
||||
.toString();
|
||||
final Uri contentUri = new Uri.Builder().appendPath(PATH_LOW_STORAGE).build();
|
||||
|
||||
return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
|
||||
StorageSettings.class.getName(), PATH_LOW_STORAGE,
|
||||
StorageSettings.class.getName(), "" /* key */,
|
||||
screenTitle,
|
||||
MetricsProto.MetricsEvent.SLICE)
|
||||
.setClassName(mContext.getPackageName(), SubSettings.class.getName())
|
||||
.setData(contentUri);
|
||||
.setClassName(mContext.getPackageName(), SubSettings.class.getName());
|
||||
}
|
||||
}
|
||||
@@ -23,11 +23,9 @@ import static androidx.slice.builders.ListBuilder.ICON_IMAGE;
|
||||
|
||||
import android.annotation.ColorInt;
|
||||
import android.app.PendingIntent;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.provider.SettingsSlicesContract;
|
||||
|
||||
import androidx.core.graphics.drawable.IconCompat;
|
||||
import androidx.slice.Slice;
|
||||
@@ -39,6 +37,7 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.SubSettings;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.slices.CustomSliceRegistry;
|
||||
import com.android.settings.slices.SliceBuilderUtils;
|
||||
|
||||
/**
|
||||
@@ -46,21 +45,11 @@ import com.android.settings.slices.SliceBuilderUtils;
|
||||
*/
|
||||
public class LocationSliceBuilder {
|
||||
|
||||
/**
|
||||
* Backing Uri for the Location Slice.
|
||||
*/
|
||||
public static final Uri LOCATION_URI = new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSlicesContract.AUTHORITY)
|
||||
.appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
|
||||
.appendPath(KEY_LOCATION)
|
||||
.build();
|
||||
|
||||
private LocationSliceBuilder() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a Location Slice bound to {@link #LOCATION_URI}.
|
||||
* Return a Location Slice bound to {@link CustomSliceRegistry#LOCATION_SLICE_URI}.
|
||||
*/
|
||||
public static Slice getSlice(Context context) {
|
||||
final IconCompat icon = IconCompat.createWithResource(context,
|
||||
@@ -70,7 +59,8 @@ public class LocationSliceBuilder {
|
||||
final PendingIntent primaryAction = getPrimaryAction(context);
|
||||
final SliceAction primarySliceAction = new SliceAction(primaryAction, icon, title);
|
||||
|
||||
return new ListBuilder(context, LOCATION_URI, ListBuilder.INFINITY)
|
||||
return new ListBuilder(context, CustomSliceRegistry.LOCATION_SLICE_URI,
|
||||
ListBuilder.INFINITY)
|
||||
.setAccentColor(color)
|
||||
.addRow(new RowBuilder()
|
||||
.setTitle(title)
|
||||
|
||||
@@ -19,7 +19,6 @@ package com.android.settings.network.telephony;
|
||||
import static android.app.slice.Slice.EXTRA_TOGGLE_STATE;
|
||||
|
||||
import android.app.PendingIntent;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
@@ -40,9 +39,8 @@ import androidx.slice.builders.SliceAction;
|
||||
import com.android.ims.ImsManager;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.slices.SettingsSliceProvider;
|
||||
import com.android.settings.slices.CustomSliceRegistry;
|
||||
import com.android.settings.slices.SliceBroadcastReceiver;
|
||||
import com.android.settings.slices.SliceBuilderUtils;
|
||||
|
||||
import java.util.concurrent.Callable;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
@@ -57,12 +55,7 @@ import java.util.concurrent.TimeoutException;
|
||||
*/
|
||||
public class Enhanced4gLteSliceHelper {
|
||||
|
||||
private static final String TAG = "Enhanced4gLteSliceHelper";
|
||||
|
||||
/**
|
||||
* Settings slice path to enhanced 4g LTE setting.
|
||||
*/
|
||||
public static final String PATH_ENHANCED_4G_LTE = "enhanced_4g_lte";
|
||||
private static final String TAG = "Enhanced4gLteSlice";
|
||||
|
||||
/**
|
||||
* Action passed for changes to enhanced 4g LTE slice (toggle).
|
||||
@@ -70,14 +63,6 @@ public class Enhanced4gLteSliceHelper {
|
||||
public static final String ACTION_ENHANCED_4G_LTE_CHANGED =
|
||||
"com.android.settings.mobilenetwork.action.ENHANCED_4G_LTE_CHANGED";
|
||||
|
||||
/**
|
||||
* Slice Uri for Enhanced 4G slice
|
||||
*/
|
||||
public static final Uri SLICE_URI = new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
|
||||
.appendPath(PATH_ENHANCED_4G_LTE)
|
||||
.build();
|
||||
/**
|
||||
* Action for mobile network settings activity which
|
||||
* allows setting configuration for Enhanced 4G LTE
|
||||
@@ -225,8 +210,7 @@ public class Enhanced4gLteSliceHelper {
|
||||
}
|
||||
// notify change in slice in any case to get re-queried. This would result in displaying
|
||||
// appropriate message with the updated setting.
|
||||
final Uri uri = SliceBuilderUtils.getUri(PATH_ENHANCED_4G_LTE, false /*isPlatformSlice*/);
|
||||
mContext.getContentResolver().notifyChange(uri, null);
|
||||
mContext.getContentResolver().notifyChange(CustomSliceRegistry.ENHANCED_4G_SLICE_URI, null);
|
||||
}
|
||||
|
||||
private CharSequence getEnhanced4glteModeTitle(int subId) {
|
||||
|
||||
@@ -35,6 +35,9 @@ import com.android.settingslib.core.lifecycle.events.OnResume;
|
||||
public class ZenModePreferenceController extends BasePreferenceController
|
||||
implements LifecycleObserver, OnResume, OnPause {
|
||||
|
||||
|
||||
public static final String ZEN_MODE_KEY = "zen_mode";
|
||||
|
||||
private SettingObserver mSettingObserver;
|
||||
private ZenModeSettings.SummaryBuilder mSummaryBuilder;
|
||||
|
||||
|
||||
@@ -18,16 +18,16 @@ package com.android.settings.notification;
|
||||
|
||||
import static android.app.slice.Slice.EXTRA_TOGGLE_STATE;
|
||||
|
||||
import static com.android.settings.notification.ZenModePreferenceController.ZEN_MODE_KEY;
|
||||
|
||||
import android.annotation.ColorInt;
|
||||
import android.app.NotificationManager;
|
||||
import android.app.PendingIntent;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.net.Uri;
|
||||
import android.provider.Settings;
|
||||
import android.provider.SettingsSlicesContract;
|
||||
|
||||
import androidx.core.graphics.drawable.IconCompat;
|
||||
import androidx.slice.Slice;
|
||||
@@ -39,7 +39,7 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.SubSettings;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.slices.SettingsSliceProvider;
|
||||
import com.android.settings.slices.CustomSliceRegistry;
|
||||
import com.android.settings.slices.SliceBroadcastReceiver;
|
||||
import com.android.settings.slices.SliceBuilderUtils;
|
||||
|
||||
@@ -47,18 +47,6 @@ public class ZenModeSliceBuilder {
|
||||
|
||||
private static final String TAG = "ZenModeSliceBuilder";
|
||||
|
||||
private static final String ZEN_MODE_KEY = "zen_mode";
|
||||
|
||||
/**
|
||||
* Backing Uri for the Zen Mode Slice.
|
||||
*/
|
||||
public static final Uri ZEN_MODE_URI = new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
|
||||
.appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
|
||||
.appendPath(ZEN_MODE_KEY)
|
||||
.build();
|
||||
|
||||
/**
|
||||
* Action notifying a change on the Zen Mode Slice.
|
||||
*/
|
||||
@@ -77,7 +65,7 @@ public class ZenModeSliceBuilder {
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a ZenMode Slice bound to {@link #ZEN_MODE_URI}.
|
||||
* Return a ZenMode Slice bound to {@link CustomSliceRegistry#ZEN_MODE_URI}.
|
||||
* <p>
|
||||
* Note that you should register a listener for {@link #INTENT_FILTER} to get changes for
|
||||
* ZenMode.
|
||||
@@ -93,7 +81,8 @@ public class ZenModeSliceBuilder {
|
||||
final SliceAction toggleSliceAction = new SliceAction(toggleAction, null /* actionTitle */,
|
||||
isZenModeEnabled);
|
||||
|
||||
return new ListBuilder(context, ZEN_MODE_URI, ListBuilder.INFINITY)
|
||||
return new ListBuilder(context, CustomSliceRegistry.ZEN_MODE_SLICE_URI,
|
||||
ListBuilder.INFINITY)
|
||||
.setAccentColor(color)
|
||||
.addRow(new RowBuilder()
|
||||
.setTitle(title)
|
||||
|
||||
@@ -16,16 +16,12 @@
|
||||
|
||||
package com.android.settings.panel;
|
||||
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.provider.SettingsSlicesContract;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.wifi.WifiSlice;
|
||||
import com.android.settings.slices.CustomSliceRegistry;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -34,19 +30,11 @@ import java.util.List;
|
||||
* Represents the Internet Connectivity Panel.
|
||||
*
|
||||
* <p>
|
||||
* Displays Wifi (full Slice) and Airplane mode.
|
||||
* Displays Wifi (full Slice) and Airplane mode.
|
||||
* </p>
|
||||
*/
|
||||
public class InternetConnectivityPanel implements PanelContent {
|
||||
|
||||
@VisibleForTesting
|
||||
static final Uri AIRPLANE_URI = new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSlicesContract.AUTHORITY)
|
||||
.appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
|
||||
.appendPath(SettingsSlicesContract.KEY_AIRPLANE_MODE)
|
||||
.build();
|
||||
|
||||
private final Context mContext;
|
||||
|
||||
public static InternetConnectivityPanel create(Context context) {
|
||||
@@ -65,8 +53,8 @@ public class InternetConnectivityPanel implements PanelContent {
|
||||
@Override
|
||||
public List<Uri> getSlices() {
|
||||
final List<Uri> uris = new ArrayList<>();
|
||||
uris.add(WifiSlice.WIFI_URI);
|
||||
uris.add(AIRPLANE_URI);
|
||||
uris.add(CustomSliceRegistry.WIFI_SLICE_URI);
|
||||
uris.add(CustomSliceRegistry.AIRPLANE_URI);
|
||||
return uris;
|
||||
}
|
||||
|
||||
|
||||
@@ -101,13 +101,13 @@ public class CustomSliceManager {
|
||||
}
|
||||
|
||||
private void addSlices() {
|
||||
mUriMap.put(WifiSlice.WIFI_URI, WifiSlice.class);
|
||||
mUriMap.put(DataUsageSlice.DATA_USAGE_CARD_URI, DataUsageSlice.class);
|
||||
mUriMap.put(DeviceInfoSlice.DEVICE_INFO_CARD_URI, DeviceInfoSlice.class);
|
||||
mUriMap.put(StorageSlice.STORAGE_CARD_URI, StorageSlice.class);
|
||||
mUriMap.put(BatterySlice.BATTERY_CARD_URI, BatterySlice.class);
|
||||
mUriMap.put(ConnectedDeviceSlice.CONNECTED_DEVICE_URI, ConnectedDeviceSlice.class);
|
||||
mUriMap.put(LowStorageSlice.LOW_STORAGE_URI, LowStorageSlice.class);
|
||||
mUriMap.put(BatteryFixSlice.BATTERY_FIX_URI, BatteryFixSlice.class);
|
||||
mUriMap.put(CustomSliceRegistry.BATTERY_FIX_SLICE_URI, BatteryFixSlice.class);
|
||||
mUriMap.put(CustomSliceRegistry.BATTERY_INFO_SLICE_URI, BatterySlice.class);
|
||||
mUriMap.put(CustomSliceRegistry.CONNECTED_DEVICE_SLICE_URI, ConnectedDeviceSlice.class);
|
||||
mUriMap.put(CustomSliceRegistry.DATA_USAGE_SLICE_URI, DataUsageSlice.class);
|
||||
mUriMap.put(CustomSliceRegistry.DEVICE_INFO_SLICE_URI, DeviceInfoSlice.class);
|
||||
mUriMap.put(CustomSliceRegistry.LOW_STORAGE_SLICE_URI, LowStorageSlice.class);
|
||||
mUriMap.put(CustomSliceRegistry.STORAGE_SLICE_URI, StorageSlice.class);
|
||||
mUriMap.put(CustomSliceRegistry.WIFI_SLICE_URI, WifiSlice.class);
|
||||
}
|
||||
}
|
||||
|
||||
184
src/com/android/settings/slices/CustomSliceRegistry.java
Normal file
184
src/com/android/settings/slices/CustomSliceRegistry.java
Normal file
@@ -0,0 +1,184 @@
|
||||
/*
|
||||
* Copyright (C) 2018 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.settings.slices;
|
||||
|
||||
import static android.provider.SettingsSlicesContract.KEY_LOCATION;
|
||||
import static android.provider.SettingsSlicesContract.KEY_WIFI;
|
||||
|
||||
import static com.android.settings.notification.ZenModePreferenceController.ZEN_MODE_KEY;
|
||||
|
||||
import android.content.ContentResolver;
|
||||
import android.net.Uri;
|
||||
import android.provider.SettingsSlicesContract;
|
||||
|
||||
import com.android.settings.fuelgauge.batterytip.BatteryTipPreferenceController;
|
||||
import com.android.settings.wifi.calling.WifiCallingSliceHelper;
|
||||
|
||||
/**
|
||||
* A registry of custom slice Uris.
|
||||
*/
|
||||
public class CustomSliceRegistry {
|
||||
|
||||
/**
|
||||
* Uri for Airplane mode Slice.
|
||||
*/
|
||||
public static final Uri AIRPLANE_URI = new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSlicesContract.AUTHORITY)
|
||||
.appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
|
||||
.appendPath(SettingsSlicesContract.KEY_AIRPLANE_MODE)
|
||||
.build();
|
||||
|
||||
/**
|
||||
* Uri for Battery Fix Slice.
|
||||
*/
|
||||
public static final Uri BATTERY_FIX_SLICE_URI = new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
|
||||
.appendEncodedPath(SettingsSlicesContract.PATH_SETTING_INTENT)
|
||||
.appendPath(BatteryTipPreferenceController.PREF_NAME)
|
||||
.build();
|
||||
/**
|
||||
* Backing Uri for the Battery info Slice.
|
||||
*/
|
||||
public static final Uri BATTERY_INFO_SLICE_URI = new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
|
||||
.appendEncodedPath(SettingsSlicesContract.PATH_SETTING_INTENT)
|
||||
.appendPath("battery_card")
|
||||
.build();
|
||||
/**
|
||||
* Backing Uri for the Bluetooth Slice.
|
||||
*/
|
||||
public static final Uri BLUETOOTH_URI = new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSlicesContract.AUTHORITY)
|
||||
.appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
|
||||
.appendPath(SettingsSlicesContract.KEY_BLUETOOTH)
|
||||
.build();
|
||||
|
||||
/**
|
||||
* Backing Uri for Connected device Slice.
|
||||
*/
|
||||
public static final Uri CONNECTED_DEVICE_SLICE_URI = new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
|
||||
.appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
|
||||
.appendPath("connected_device")
|
||||
.build();
|
||||
/**
|
||||
* Backing Uri for the Data usage Slice.
|
||||
*/
|
||||
public static final Uri DATA_USAGE_SLICE_URI = new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
|
||||
.appendPath("data_usage_card")
|
||||
.build();
|
||||
/**
|
||||
* Backing Uri for the Device info Slice.
|
||||
*/
|
||||
public static final Uri DEVICE_INFO_SLICE_URI = new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
|
||||
.appendPath("device_info_card")
|
||||
.build();
|
||||
/**
|
||||
* Backing Uri for the Emergency Info Slice.
|
||||
*/
|
||||
public static final Uri EMERGENCY_INFO_SLICE_URI = new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
|
||||
.appendPath("emergency_info_card")
|
||||
.build();
|
||||
/**
|
||||
* Slice Uri for Enhanced 4G slice
|
||||
*/
|
||||
public static final Uri ENHANCED_4G_SLICE_URI = new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
|
||||
.appendPath("enhanced_4g_lte")
|
||||
.build();
|
||||
/**
|
||||
* Backing Uri for the Flashlight Slice.
|
||||
*/
|
||||
public static final Uri FLASHLIGHT_SLICE_URI = new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
|
||||
.appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
|
||||
.appendPath("flashlight")
|
||||
.build();
|
||||
/**
|
||||
* Backing Uri for the Location Slice.
|
||||
*/
|
||||
public static final Uri LOCATION_SLICE_URI = new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSlicesContract.AUTHORITY)
|
||||
.appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
|
||||
.appendPath(KEY_LOCATION)
|
||||
.build();
|
||||
/**
|
||||
* Backing Uri for Low storage Slice.
|
||||
*/
|
||||
public static final Uri LOW_STORAGE_SLICE_URI = new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
|
||||
.appendEncodedPath(SettingsSlicesContract.PATH_SETTING_INTENT)
|
||||
.appendPath("low_storage")
|
||||
.build();
|
||||
/**
|
||||
* Backing Uri for the storage slice.
|
||||
*/
|
||||
public static final Uri STORAGE_SLICE_URI = new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
|
||||
.appendPath("storage_card")
|
||||
.build();
|
||||
/**
|
||||
* Full {@link Uri} for the Wifi Calling Slice.
|
||||
*/
|
||||
public static final Uri WIFI_CALLING_URI = new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
|
||||
.appendPath(WifiCallingSliceHelper.PATH_WIFI_CALLING)
|
||||
.build();
|
||||
/**
|
||||
* Full {@link Uri} for the Wifi Calling Preference Slice.
|
||||
*/
|
||||
public static final Uri WIFI_CALLING_PREFERENCE_URI = new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
|
||||
.appendPath(WifiCallingSliceHelper.PATH_WIFI_CALLING_PREFERENCE)
|
||||
.build();
|
||||
/**
|
||||
* Backing Uri for the Wifi Slice.
|
||||
*/
|
||||
public static final Uri WIFI_SLICE_URI = new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSlicesContract.AUTHORITY)
|
||||
.appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
|
||||
.appendPath(KEY_WIFI)
|
||||
.build();
|
||||
/**
|
||||
* Backing Uri for the Zen Mode Slice.
|
||||
*/
|
||||
public static final Uri ZEN_MODE_SLICE_URI = new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
|
||||
.appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
|
||||
.appendPath(ZEN_MODE_KEY)
|
||||
.build();
|
||||
}
|
||||
@@ -44,11 +44,8 @@ import com.android.settings.core.BasePreferenceController;
|
||||
import com.android.settings.flashlight.FlashlightSliceBuilder;
|
||||
import com.android.settings.homepage.contextualcards.deviceinfo.EmergencyInfoSlice;
|
||||
import com.android.settings.location.LocationSliceBuilder;
|
||||
import com.android.settings.network.telephony.Enhanced4gLteSliceHelper;
|
||||
import com.android.settings.notification.ZenModeSliceBuilder;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
import com.android.settings.wifi.WifiSlice;
|
||||
import com.android.settings.wifi.calling.WifiCallingSliceHelper;
|
||||
import com.android.settingslib.SliceBroadcastRelay;
|
||||
import com.android.settingslib.utils.ThreadUtils;
|
||||
|
||||
@@ -175,23 +172,21 @@ public class SettingsSliceProvider extends SliceProvider {
|
||||
if (filter != null) {
|
||||
registerIntentToUri(filter, sliceUri);
|
||||
}
|
||||
ThreadUtils.postOnMainThread(() -> {
|
||||
startBackgroundWorker(sliceable);
|
||||
});
|
||||
ThreadUtils.postOnMainThread(() -> startBackgroundWorker(sliceable));
|
||||
return;
|
||||
}
|
||||
|
||||
if (ZenModeSliceBuilder.ZEN_MODE_URI.equals(sliceUri)) {
|
||||
if (CustomSliceRegistry.ZEN_MODE_SLICE_URI.equals(sliceUri)) {
|
||||
registerIntentToUri(ZenModeSliceBuilder.INTENT_FILTER, sliceUri);
|
||||
return;
|
||||
} else if (BluetoothSliceBuilder.BLUETOOTH_URI.equals(sliceUri)) {
|
||||
} else if (CustomSliceRegistry.BLUETOOTH_URI.equals(sliceUri)) {
|
||||
registerIntentToUri(BluetoothSliceBuilder.INTENT_FILTER, sliceUri);
|
||||
return;
|
||||
} else if (FlashlightSliceBuilder.FLASHLIGHT_URI.equals(sliceUri)) {
|
||||
} else if (CustomSliceRegistry.FLASHLIGHT_SLICE_URI.equals(sliceUri)) {
|
||||
registerIntentToUri(FlashlightSliceBuilder.INTENT_FILTER, sliceUri);
|
||||
mRegisteredUris.add(sliceUri);
|
||||
return;
|
||||
} else if (EmergencyInfoSlice.EMERGENCY_INFO_CARD_URI.equals(sliceUri)) {
|
||||
} else if (CustomSliceRegistry.EMERGENCY_INFO_SLICE_URI.equals(sliceUri)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -236,30 +231,30 @@ public class SettingsSliceProvider extends SliceProvider {
|
||||
return sliceable.getSlice();
|
||||
}
|
||||
|
||||
if (WifiCallingSliceHelper.WIFI_CALLING_URI.equals(sliceUri)) {
|
||||
if (CustomSliceRegistry.WIFI_CALLING_URI.equals(sliceUri)) {
|
||||
return FeatureFactory.getFactory(getContext())
|
||||
.getSlicesFeatureProvider()
|
||||
.getNewWifiCallingSliceHelper(getContext())
|
||||
.createWifiCallingSlice(sliceUri);
|
||||
} else if (ZenModeSliceBuilder.ZEN_MODE_URI.equals(sliceUri)) {
|
||||
} else if (CustomSliceRegistry.ZEN_MODE_SLICE_URI.equals(sliceUri)) {
|
||||
return ZenModeSliceBuilder.getSlice(getContext());
|
||||
} else if (BluetoothSliceBuilder.BLUETOOTH_URI.equals(sliceUri)) {
|
||||
} else if (CustomSliceRegistry.BLUETOOTH_URI.equals(sliceUri)) {
|
||||
return BluetoothSliceBuilder.getSlice(getContext());
|
||||
} else if (LocationSliceBuilder.LOCATION_URI.equals(sliceUri)) {
|
||||
} else if (CustomSliceRegistry.LOCATION_SLICE_URI.equals(sliceUri)) {
|
||||
return LocationSliceBuilder.getSlice(getContext());
|
||||
} else if (Enhanced4gLteSliceHelper.SLICE_URI.equals(sliceUri)) {
|
||||
} else if (CustomSliceRegistry.ENHANCED_4G_SLICE_URI.equals(sliceUri)) {
|
||||
return FeatureFactory.getFactory(getContext())
|
||||
.getSlicesFeatureProvider()
|
||||
.getNewEnhanced4gLteSliceHelper(getContext())
|
||||
.createEnhanced4gLteSlice(sliceUri);
|
||||
} else if (WifiCallingSliceHelper.WIFI_CALLING_PREFERENCE_URI.equals(sliceUri)) {
|
||||
} else if (CustomSliceRegistry.WIFI_CALLING_PREFERENCE_URI.equals(sliceUri)) {
|
||||
return FeatureFactory.getFactory(getContext())
|
||||
.getSlicesFeatureProvider()
|
||||
.getNewWifiCallingSliceHelper(getContext())
|
||||
.createWifiCallingPreferenceSlice(sliceUri);
|
||||
} else if (FlashlightSliceBuilder.FLASHLIGHT_URI.equals(sliceUri)) {
|
||||
} else if (CustomSliceRegistry.FLASHLIGHT_SLICE_URI.equals(sliceUri)) {
|
||||
return FlashlightSliceBuilder.getSlice(getContext());
|
||||
} else if (EmergencyInfoSlice.EMERGENCY_INFO_CARD_URI.equals(sliceUri)) {
|
||||
} else if (CustomSliceRegistry.EMERGENCY_INFO_SLICE_URI.equals(sliceUri)) {
|
||||
return EmergencyInfoSlice.getSlice(getContext());
|
||||
}
|
||||
|
||||
@@ -476,16 +471,16 @@ public class SettingsSliceProvider extends SliceProvider {
|
||||
|
||||
private List<Uri> getSpecialCasePlatformUris() {
|
||||
return Arrays.asList(
|
||||
WifiSlice.WIFI_URI,
|
||||
BluetoothSliceBuilder.BLUETOOTH_URI,
|
||||
LocationSliceBuilder.LOCATION_URI
|
||||
CustomSliceRegistry.WIFI_SLICE_URI,
|
||||
CustomSliceRegistry.BLUETOOTH_URI,
|
||||
CustomSliceRegistry.LOCATION_SLICE_URI
|
||||
);
|
||||
}
|
||||
|
||||
private List<Uri> getSpecialCaseOemUris() {
|
||||
return Arrays.asList(
|
||||
ZenModeSliceBuilder.ZEN_MODE_URI,
|
||||
FlashlightSliceBuilder.FLASHLIGHT_URI
|
||||
CustomSliceRegistry.ZEN_MODE_SLICE_URI,
|
||||
CustomSliceRegistry.FLASHLIGHT_SLICE_URI
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -62,11 +62,11 @@ public class SliceDeepLinkSpringBoard extends Activity {
|
||||
final CustomSliceable sliceable =
|
||||
customSliceManager.getSliceableFromUri(sliceUri);
|
||||
launchIntent = sliceable.getIntent();
|
||||
} else if (ZenModeSliceBuilder.ZEN_MODE_URI.equals(sliceUri)) {
|
||||
} else if (CustomSliceRegistry.ZEN_MODE_SLICE_URI.equals(sliceUri)) {
|
||||
launchIntent = ZenModeSliceBuilder.getIntent(this /* context */);
|
||||
} else if (BluetoothSliceBuilder.BLUETOOTH_URI.equals(sliceUri)) {
|
||||
} else if (CustomSliceRegistry.BLUETOOTH_URI.equals(sliceUri)) {
|
||||
launchIntent = BluetoothSliceBuilder.getIntent(this /* context */);
|
||||
} else if (LocationSliceBuilder.LOCATION_URI.equals(sliceUri)) {
|
||||
} else if (CustomSliceRegistry.LOCATION_SLICE_URI.equals(sliceUri)) {
|
||||
launchIntent = LocationSliceBuilder.getIntent(this /* context */);
|
||||
} else {
|
||||
final SlicesDatabaseAccessor slicesDatabaseAccessor =
|
||||
|
||||
@@ -19,9 +19,10 @@ package com.android.settings.wifi;
|
||||
import static android.app.slice.Slice.EXTRA_TOGGLE_STATE;
|
||||
import static android.provider.SettingsSlicesContract.KEY_WIFI;
|
||||
|
||||
import static com.android.settings.slices.CustomSliceRegistry.WIFI_SLICE_URI;
|
||||
|
||||
import android.annotation.ColorInt;
|
||||
import android.app.PendingIntent;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
@@ -30,7 +31,6 @@ import android.net.wifi.WifiInfo;
|
||||
import android.net.wifi.WifiManager;
|
||||
import android.net.wifi.WifiSsid;
|
||||
import android.os.Bundle;
|
||||
import android.provider.SettingsSlicesContract;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
@@ -60,16 +60,6 @@ import java.util.List;
|
||||
*/
|
||||
public class WifiSlice implements CustomSliceable {
|
||||
|
||||
/**
|
||||
* Backing Uri for the Wifi Slice.
|
||||
*/
|
||||
public static final Uri WIFI_URI = new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSlicesContract.AUTHORITY)
|
||||
.appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
|
||||
.appendPath(KEY_WIFI)
|
||||
.build();
|
||||
|
||||
@VisibleForTesting
|
||||
static final int DEFAULT_EXPANDED_ROW_COUNT = 3;
|
||||
|
||||
@@ -81,7 +71,7 @@ public class WifiSlice implements CustomSliceable {
|
||||
|
||||
@Override
|
||||
public Uri getUri() {
|
||||
return WIFI_URI;
|
||||
return WIFI_SLICE_URI;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -92,9 +82,6 @@ public class WifiSlice implements CustomSliceable {
|
||||
return filter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a Wifi Slice bound to {@link #WIFI_URI}.
|
||||
*/
|
||||
@Override
|
||||
public Slice getSlice() {
|
||||
final boolean isWifiEnabled = isWifiEnabled();
|
||||
@@ -109,7 +96,8 @@ public class WifiSlice implements CustomSliceable {
|
||||
final SliceAction toggleSliceAction = new SliceAction(toggleAction, null /* actionTitle */,
|
||||
isWifiEnabled);
|
||||
|
||||
final ListBuilder listBuilder = new ListBuilder(mContext, WIFI_URI, ListBuilder.INFINITY)
|
||||
final ListBuilder listBuilder = new ListBuilder(mContext, WIFI_SLICE_URI,
|
||||
ListBuilder.INFINITY)
|
||||
.setAccentColor(color)
|
||||
.addRow(new RowBuilder()
|
||||
.setTitle(title)
|
||||
|
||||
@@ -18,9 +18,11 @@ package com.android.settings.wifi.calling;
|
||||
|
||||
import static android.app.slice.Slice.EXTRA_TOGGLE_STATE;
|
||||
|
||||
import static com.android.settings.slices.CustomSliceRegistry.WIFI_CALLING_PREFERENCE_URI;
|
||||
import static com.android.settings.slices.CustomSliceRegistry.WIFI_CALLING_URI;
|
||||
|
||||
import android.app.PendingIntent;
|
||||
import android.content.ComponentName;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
@@ -42,9 +44,7 @@ import com.android.ims.ImsConfig;
|
||||
import com.android.ims.ImsManager;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.slices.SettingsSliceProvider;
|
||||
import com.android.settings.slices.SliceBroadcastReceiver;
|
||||
import com.android.settings.slices.SliceBuilderUtils;
|
||||
|
||||
import java.util.concurrent.Callable;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
@@ -103,24 +103,6 @@ public class WifiCallingSliceHelper {
|
||||
public static final String ACTION_WIFI_CALLING_SETTINGS_ACTIVITY =
|
||||
"android.settings.WIFI_CALLING_SETTINGS";
|
||||
|
||||
/**
|
||||
* Full {@link Uri} for the Wifi Calling Slice.
|
||||
*/
|
||||
public static final Uri WIFI_CALLING_URI = new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
|
||||
.appendPath(PATH_WIFI_CALLING)
|
||||
.build();
|
||||
|
||||
/**
|
||||
* Full {@link Uri} for the Wifi Calling Preference Slice.
|
||||
*/
|
||||
public static final Uri WIFI_CALLING_PREFERENCE_URI = new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
|
||||
.appendPath(PATH_WIFI_CALLING_PREFERENCE)
|
||||
.build();
|
||||
|
||||
/**
|
||||
* Timeout for querying wifi calling setting from ims manager.
|
||||
*/
|
||||
@@ -246,7 +228,7 @@ public class WifiCallingSliceHelper {
|
||||
}
|
||||
|
||||
final boolean isWifiCallingPrefEditable = isCarrierConfigManagerKeyEnabled(
|
||||
CarrierConfigManager.KEY_EDITABLE_WFC_MODE_BOOL, subId,false);
|
||||
CarrierConfigManager.KEY_EDITABLE_WFC_MODE_BOOL, subId, false);
|
||||
final boolean isWifiOnlySupported = isCarrierConfigManagerKeyEnabled(
|
||||
CarrierConfigManager.KEY_CARRIER_WFC_SUPPORTS_WIFI_ONLY_BOOL, subId, true);
|
||||
final ImsManager imsManager = getImsManager(subId);
|
||||
@@ -287,8 +269,8 @@ public class WifiCallingSliceHelper {
|
||||
* Returns actionable wifi calling preference slice.
|
||||
*
|
||||
* @param isWifiOnlySupported adds row for wifi only if this is true
|
||||
* @param currentWfcPref current Preference {@link ImsConfig}
|
||||
* @param sliceUri sliceUri
|
||||
* @param currentWfcPref current Preference {@link ImsConfig}
|
||||
* @param sliceUri sliceUri
|
||||
* @return Slice for actionable wifi calling preference settings
|
||||
*/
|
||||
private Slice getWifiCallingPreferenceSlice(boolean isWifiOnlySupported,
|
||||
@@ -299,12 +281,12 @@ public class WifiCallingSliceHelper {
|
||||
ListBuilder listBuilder = new ListBuilder(mContext, sliceUri, ListBuilder.INFINITY)
|
||||
.setAccentColor(Utils.getColorAccentDefaultColor(mContext));
|
||||
listBuilder.setHeader(new ListBuilder.HeaderBuilder()
|
||||
.setTitle(mContext.getText(R.string.wifi_calling_mode_title))
|
||||
.setSubtitle(getWifiCallingPreferenceSummary(currentWfcPref))
|
||||
.setPrimaryAction(new SliceAction(
|
||||
getActivityIntent(ACTION_WIFI_CALLING_SETTINGS_ACTIVITY),
|
||||
icon,
|
||||
mContext.getText(R.string.wifi_calling_mode_title))));
|
||||
.setTitle(mContext.getText(R.string.wifi_calling_mode_title))
|
||||
.setSubtitle(getWifiCallingPreferenceSummary(currentWfcPref))
|
||||
.setPrimaryAction(new SliceAction(
|
||||
getActivityIntent(ACTION_WIFI_CALLING_SETTINGS_ACTIVITY),
|
||||
icon,
|
||||
mContext.getText(R.string.wifi_calling_mode_title))));
|
||||
|
||||
if (isWifiOnlySupported) {
|
||||
listBuilder.addRow(wifiPreferenceRowBuilder(listBuilder,
|
||||
@@ -329,9 +311,9 @@ public class WifiCallingSliceHelper {
|
||||
/**
|
||||
* Returns RowBuilder for a new row containing specific wifi calling preference.
|
||||
*
|
||||
* @param listBuilder ListBuilder that will be the parent for this RowBuilder
|
||||
* @param listBuilder ListBuilder that will be the parent for this RowBuilder
|
||||
* @param preferenceTitleResId resource Id for the preference row title
|
||||
* @param action action to be added for the row
|
||||
* @param action action to be added for the row
|
||||
* @return RowBuilder for the row
|
||||
*/
|
||||
private RowBuilder wifiPreferenceRowBuilder(ListBuilder listBuilder,
|
||||
@@ -414,8 +396,7 @@ public class WifiCallingSliceHelper {
|
||||
}
|
||||
// notify change in slice in any case to get re-queried. This would result in displaying
|
||||
// appropriate message with the updated setting.
|
||||
final Uri uri = SliceBuilderUtils.getUri(PATH_WIFI_CALLING, false /*isPlatformSlice*/);
|
||||
mContext.getContentResolver().notifyChange(uri, null);
|
||||
mContext.getContentResolver().notifyChange(WIFI_CALLING_URI, null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -433,7 +414,7 @@ public class WifiCallingSliceHelper {
|
||||
|
||||
if (subId > SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
|
||||
final boolean isWifiCallingPrefEditable = isCarrierConfigManagerKeyEnabled(
|
||||
CarrierConfigManager.KEY_EDITABLE_WFC_MODE_BOOL, subId,false);
|
||||
CarrierConfigManager.KEY_EDITABLE_WFC_MODE_BOOL, subId, false);
|
||||
final boolean isWifiOnlySupported = isCarrierConfigManagerKeyEnabled(
|
||||
CarrierConfigManager.KEY_CARRIER_WFC_SUPPORTS_WIFI_ONLY_BOOL, subId, true);
|
||||
|
||||
@@ -470,15 +451,13 @@ public class WifiCallingSliceHelper {
|
||||
|
||||
// notify change in slice in any case to get re-queried. This would result in displaying
|
||||
// appropriate message.
|
||||
final Uri uri = SliceBuilderUtils.getUri(PATH_WIFI_CALLING_PREFERENCE,
|
||||
false /*isPlatformSlice*/);
|
||||
mContext.getContentResolver().notifyChange(uri, null);
|
||||
mContext.getContentResolver().notifyChange(WIFI_CALLING_PREFERENCE_URI, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns Slice with the title and subtitle provided as arguments with wifi signal Icon.
|
||||
*
|
||||
* @param title Title of the slice
|
||||
* @param title Title of the slice
|
||||
* @param subtitle Subtitle of the slice
|
||||
* @param sliceUri slice uri
|
||||
* @return Slice with title and subtitle
|
||||
|
||||
Reference in New Issue
Block a user