diff options
| -rw-r--r-- | apex/jobscheduler/service/java/com/android/server/job/restrictions/ThermalStatusRestriction.java | 43 | ||||
| -rw-r--r-- | api/system-current.txt | 16 | ||||
| -rw-r--r-- | api/test-current.txt | 2 | ||||
| -rw-r--r-- | core/java/com/android/internal/app/ResolverActivity.java | 46 | ||||
| -rw-r--r-- | core/res/res/layout/resolve_list_item.xml | 20 | ||||
| -rw-r--r-- | core/res/res/layout/resolver_different_item_header.xml | 16 | ||||
| -rw-r--r-- | core/res/res/layout/resolver_list.xml | 63 | ||||
| -rw-r--r-- | core/res/res/layout/resolver_list_with_default.xml | 76 | ||||
| -rw-r--r-- | core/res/res/values/dimens.xml | 12 | ||||
| -rw-r--r-- | core/res/res/values/symbols.xml | 4 | ||||
| -rw-r--r-- | data/etc/car/com.google.android.car.kitchensink.xml | 13 | ||||
| -rw-r--r-- | location/java/android/location/Location.java | 8 | ||||
| -rw-r--r-- | packages/PackageInstaller/res/values-television/themes.xml | 31 | ||||
| -rw-r--r-- | telephony/java/android/telephony/SmsManager.java | 30 | ||||
| -rw-r--r-- | telephony/java/android/telephony/ims/stub/ImsSmsImplBase.java | 144 |
15 files changed, 304 insertions, 220 deletions
diff --git a/apex/jobscheduler/service/java/com/android/server/job/restrictions/ThermalStatusRestriction.java b/apex/jobscheduler/service/java/com/android/server/job/restrictions/ThermalStatusRestriction.java index b97da59f8d17..aa7696df6dbd 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/restrictions/ThermalStatusRestriction.java +++ b/apex/jobscheduler/service/java/com/android/server/job/restrictions/ThermalStatusRestriction.java @@ -17,13 +17,8 @@ package com.android.server.job.restrictions; import android.app.job.JobParameters; -import android.content.Context; -import android.os.IThermalService; -import android.os.IThermalStatusListener; -import android.os.RemoteException; -import android.os.ServiceManager; -import android.os.Temperature; -import android.util.Slog; +import android.os.PowerManager; +import android.os.PowerManager.OnThermalStatusChangedListener; import android.util.proto.ProtoOutputStream; import com.android.internal.util.IndentingPrintWriter; @@ -36,31 +31,29 @@ public class ThermalStatusRestriction extends JobRestriction { private volatile boolean mIsThermalRestricted = false; + private PowerManager mPowerManager; + public ThermalStatusRestriction(JobSchedulerService service) { super(service, JobParameters.REASON_DEVICE_THERMAL); } @Override public void onSystemServicesReady() { - final IThermalService thermalService = IThermalService.Stub.asInterface( - ServiceManager.getService(Context.THERMAL_SERVICE)); - if (thermalService != null) { - try { - thermalService.registerThermalStatusListener(new IThermalStatusListener.Stub() { - @Override - public void onStatusChange(int status) { - final boolean shouldBeActive = status >= Temperature.THROTTLING_SEVERE; - if (mIsThermalRestricted == shouldBeActive) { - return; - } - mIsThermalRestricted = shouldBeActive; - mService.onControllerStateChanged(); - } - }); - } catch (RemoteException e) { - Slog.e(TAG, "Failed to register thermal callback.", e); + mPowerManager = mService.getContext().getSystemService(PowerManager.class); + // Use MainExecutor + mPowerManager.addThermalStatusListener(new OnThermalStatusChangedListener() { + @Override + public void onThermalStatusChanged(int status) { + // This is called on the main thread. Do not do any slow operations in it. + // mService.onControllerStateChanged() will just post a message, which is okay. + final boolean shouldBeActive = status >= PowerManager.THERMAL_STATUS_SEVERE; + if (mIsThermalRestricted == shouldBeActive) { + return; + } + mIsThermalRestricted = shouldBeActive; + mService.onControllerStateChanged(); } - } + }); } @Override diff --git a/api/system-current.txt b/api/system-current.txt index 447ba30382a8..92315368d182 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -3420,7 +3420,9 @@ package android.location { public class Location implements android.os.Parcelable { method public boolean isComplete(); method public void makeComplete(); + method public void setExtraLocation(@Nullable String, @Nullable android.location.Location); method public void setIsFromMockProvider(boolean); + field public static final String EXTRA_NO_GPS_LOCATION = "noGPSLocation"; } public class LocationManager { @@ -9576,17 +9578,17 @@ package android.telephony.ims.stub { public class ImsSmsImplBase { ctor public ImsSmsImplBase(); - method public void acknowledgeSms(int, int, int); - method public void acknowledgeSmsReport(int, int, int); + method public void acknowledgeSms(int, @IntRange(from=0, to=65535) int, int); + method public void acknowledgeSmsReport(int, @IntRange(from=0, to=65535) int, int); method public String getSmsFormat(); method public void onReady(); - method @Deprecated public final void onSendSmsResult(int, int, int, int) throws java.lang.RuntimeException; - method public final void onSendSmsResultError(int, int, int, int, int) throws java.lang.RuntimeException; - method public final void onSendSmsResultSuccess(int, int) throws java.lang.RuntimeException; + method @Deprecated public final void onSendSmsResult(int, @IntRange(from=0, to=65535) int, int, int) throws java.lang.RuntimeException; + method public final void onSendSmsResultError(int, @IntRange(from=0, to=65535) int, int, int, int) throws java.lang.RuntimeException; + method public final void onSendSmsResultSuccess(int, @IntRange(from=0, to=65535) int) throws java.lang.RuntimeException; method public final void onSmsReceived(int, String, byte[]) throws java.lang.RuntimeException; - method @Deprecated public final void onSmsStatusReportReceived(int, int, String, byte[]) throws java.lang.RuntimeException; + method @Deprecated public final void onSmsStatusReportReceived(int, @IntRange(from=0, to=65535) int, String, byte[]) throws java.lang.RuntimeException; method public final void onSmsStatusReportReceived(int, String, byte[]) throws java.lang.RuntimeException; - method public void sendSms(int, int, String, String, boolean, byte[]); + method public void sendSms(int, @IntRange(from=0, to=65535) int, String, String, boolean, byte[]); field public static final int DELIVER_STATUS_ERROR_GENERIC = 2; // 0x2 field public static final int DELIVER_STATUS_ERROR_NO_MEMORY = 3; // 0x3 field public static final int DELIVER_STATUS_ERROR_REQUEST_NOT_SUPPORTED = 4; // 0x4 diff --git a/api/test-current.txt b/api/test-current.txt index 6715f4a2417e..d292e0173761 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -1091,6 +1091,8 @@ package android.location { public class Location implements android.os.Parcelable { method public void makeComplete(); + method public void setExtraLocation(@Nullable String, @Nullable android.location.Location); + field public static final String EXTRA_NO_GPS_LOCATION = "noGPSLocation"; } public class LocationManager { diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java index 407a85f1bb05..068056f091d7 100644 --- a/core/java/com/android/internal/app/ResolverActivity.java +++ b/core/java/com/android/internal/app/ResolverActivity.java @@ -388,21 +388,24 @@ public class ResolverActivity extends Activity { mResolverDrawerLayout.setPadding(mSystemWindowInsets.left, mSystemWindowInsets.top, mSystemWindowInsets.right, 0); - View emptyView = findViewById(R.id.empty); - if (emptyView != null) { - emptyView.setPadding(0, 0, 0, mSystemWindowInsets.bottom - + getResources().getDimensionPixelSize( - R.dimen.chooser_edge_margin_normal) * 2); - } - - if (mFooterSpacer == null) { - mFooterSpacer = new Space(getApplicationContext()); + // Need extra padding so the list can fully scroll up + if (useLayoutWithDefault()) { + if (mFooterSpacer == null) { + mFooterSpacer = new Space(getApplicationContext()); + } else { + ((ListView) mAdapterView).removeFooterView(mFooterSpacer); + } + mFooterSpacer.setLayoutParams(new AbsListView.LayoutParams(LayoutParams.MATCH_PARENT, + mSystemWindowInsets.bottom)); + ((ListView) mAdapterView).addFooterView(mFooterSpacer); } else { - ((ListView) mAdapterView).removeFooterView(mFooterSpacer); + View emptyView = findViewById(R.id.empty); + if (emptyView != null) { + emptyView.setPadding(0, 0, 0, mSystemWindowInsets.bottom + + getResources().getDimensionPixelSize( + R.dimen.chooser_edge_margin_normal) * 2); + } } - mFooterSpacer.setLayoutParams(new AbsListView.LayoutParams(LayoutParams.MATCH_PARENT, - mSystemWindowInsets.bottom)); - ((ListView) mAdapterView).addFooterView(mFooterSpacer); resetButtonBar(); @@ -561,7 +564,7 @@ public class ResolverActivity extends Activity { intent.getData().getHost(), mAdapter.getFilteredItem().getDisplayLabel()); } else if (mAdapter.areAllTargetsBrowsers()) { - dialogTitle = getString(ActionTitle.BROWSABLE_TITLE_RES); + dialogTitle = getString(ActionTitle.BROWSABLE_TITLE_RES); } else { dialogTitle = getString(ActionTitle.BROWSABLE_HOST_TITLE_RES, intent.getData().getHost()); @@ -1304,6 +1307,7 @@ public class ResolverActivity extends Activity { // In case this method is called again (due to activity recreation), avoid adding a new // header if one is already present. if (useHeader && listView != null && listView.getHeaderViewsCount() == 0) { + listView.setHeaderDividersEnabled(true); listView.addHeaderView(LayoutInflater.from(this).inflate( R.layout.resolver_different_item_header, listView, false)); } @@ -1346,11 +1350,13 @@ public class ResolverActivity extends Activity { final ViewGroup buttonLayout = findViewById(R.id.button_bar); if (buttonLayout != null) { buttonLayout.setVisibility(View.VISIBLE); - int inset = mSystemWindowInsets != null ? mSystemWindowInsets.bottom : 0; - buttonLayout.setPadding(buttonLayout.getPaddingLeft(), buttonLayout.getPaddingTop(), - buttonLayout.getPaddingRight(), getResources().getDimensionPixelSize( - R.dimen.resolver_button_bar_spacing) + inset); + if (!useLayoutWithDefault()) { + int inset = mSystemWindowInsets != null ? mSystemWindowInsets.bottom : 0; + buttonLayout.setPadding(buttonLayout.getPaddingLeft(), buttonLayout.getPaddingTop(), + buttonLayout.getPaddingRight(), getResources().getDimensionPixelSize( + R.dimen.resolver_button_bar_spacing) + inset); + } mOnceButton = (Button) buttonLayout.findViewById(R.id.button_once); mAlwaysButton = (Button) buttonLayout.findViewById(R.id.button_always); @@ -2057,7 +2063,9 @@ public class ResolverActivity extends Activity { CharSequence subLabel = info.getExtendedInfo(); if (TextUtils.equals(label, subLabel)) subLabel = null; - if (!TextUtils.equals(holder.text2.getText(), subLabel)) { + if (!TextUtils.equals(holder.text2.getText(), subLabel) + && !TextUtils.isEmpty(subLabel)) { + holder.text2.setVisibility(View.VISIBLE); holder.text2.setText(subLabel); } diff --git a/core/res/res/layout/resolve_list_item.xml b/core/res/res/layout/resolve_list_item.xml index 0bdb25a8d307..485709523e66 100644 --- a/core/res/res/layout/resolve_list_item.xml +++ b/core/res/res/layout/resolve_list_item.xml @@ -22,8 +22,6 @@ android:layout_height="wrap_content" android:layout_width="match_parent" android:minHeight="?attr/listPreferredItemHeightSmall" - android:paddingTop="4dp" - android:paddingBottom="4dp" android:background="?attr/activatedBackgroundIndicator"> <!-- Activity icon when presenting dialog @@ -32,7 +30,8 @@ android:layout_width="@dimen/resolver_icon_size" android:layout_height="@dimen/resolver_icon_size" android:layout_gravity="start|center_vertical" - android:layout_marginStart="?attr/listPreferredItemPaddingStart" + android:layout_marginStart="@dimen/resolver_icon_margin" + android:layout_marginEnd="@dimen/resolver_icon_margin" android:layout_marginTop="12dp" android:layout_marginBottom="12dp" android:scaleType="fitCenter" /> @@ -40,8 +39,7 @@ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:gravity="start|center_vertical" android:orientation="vertical" - android:paddingStart="?attr/listPreferredItemPaddingStart" - android:paddingEnd="?attr/listPreferredItemPaddingEnd" + android:paddingEnd="@dimen/resolver_edge_margin" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_gravity="start|center_vertical"> @@ -49,14 +47,20 @@ <TextView android:id="@android:id/text1" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:textAppearance="?attr/textAppearanceMedium" - android:textColor="?attr/textColorPrimary" + android:layout_gravity="start|center_vertical" + android:textColor="?android:attr/textColorPrimary" + android:fontFamily="@android:string/config_bodyFontFamily" + android:textSize="16sp" android:minLines="1" android:maxLines="1" android:ellipsize="marquee" /> <!-- Extended activity info to distinguish between duplicate activity names --> <TextView android:id="@android:id/text2" - android:textAppearance="?android:attr/textAppearanceSmall" + android:textColor="?android:attr/textColorSecondary" + android:fontFamily="@android:string/config_bodyFontFamily" + android:layout_gravity="start|center_vertical" + android:textSize="14sp" + android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:minLines="1" diff --git a/core/res/res/layout/resolver_different_item_header.xml b/core/res/res/layout/resolver_different_item_header.xml index 7d9ffd72870d..0a35edc42329 100644 --- a/core/res/res/layout/resolver_different_item_header.xml +++ b/core/res/res/layout/resolver_different_item_header.xml @@ -22,12 +22,12 @@ android:layout_height="wrap_content" android:layout_alwaysShow="true" android:text="@string/use_a_different_app" - android:minHeight="56dp" - android:textAppearance="?android:attr/textAppearanceMedium" + android:textColor="?android:attr/textColorPrimary" + android:fontFamily="@android:string/config_headlineFontFamilyMedium" + android:textSize="16sp" android:gravity="start|center_vertical" - android:paddingStart="16dp" - android:paddingEnd="16dp" - android:paddingTop="8dp" - android:paddingBottom="8dp" - android:elevation="8dp" - /> + android:paddingStart="@dimen/resolver_edge_margin" + android:paddingEnd="@dimen/resolver_edge_margin" + android:paddingTop="@dimen/resolver_small_margin" + android:paddingBottom="@dimen/resolver_edge_margin" + android:elevation="1dp" /> diff --git a/core/res/res/layout/resolver_list.xml b/core/res/res/layout/resolver_list.xml index 1dd420746e8a..6e45e7a4c509 100644 --- a/core/res/res/layout/resolver_list.xml +++ b/core/res/res/layout/resolver_list.xml @@ -29,16 +29,18 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alwaysShow="true" - android:elevation="8dp" - android:background="?attr/colorBackgroundFloating"> + android:elevation="@dimen/resolver_elevation" + android:paddingTop="@dimen/resolver_small_margin" + android:paddingStart="@dimen/resolver_edge_margin" + android:paddingEnd="@dimen/resolver_edge_margin" + android:paddingBottom="@dimen/resolver_edge_margin" + android:background="@drawable/bottomsheet_background"> <TextView android:id="@+id/profile_button" android:layout_width="wrap_content" android:layout_height="48dp" android:layout_marginEnd="8dp" - android:paddingStart="8dp" - android:paddingEnd="8dp" android:visibility="gone" style="?attr/borderlessButtonStyle" android:textAppearance="?attr/textAppearanceButton" @@ -50,36 +52,49 @@ <TextView android:id="@+id/title" - android:layout_width="wrap_content" + android:layout_width="match_parent" android:layout_height="wrap_content" - android:minHeight="56dp" - android:textAppearance="?attr/textAppearanceMedium" - android:gravity="start|center_vertical" - android:paddingStart="?attr/dialogPreferredPadding" - android:paddingEnd="?attr/dialogPreferredPadding" - android:paddingTop="8dp" android:layout_below="@id/profile_button" android:layout_alignParentStart="true" - android:paddingBottom="8dp" /> + android:textColor="?android:attr/textColorPrimary" + android:fontFamily="@android:string/config_headlineFontFamilyMedium" + android:textSize="16sp" + android:gravity="start|center_vertical" /> </RelativeLayout> + <View + android:layout_alwaysShow="true" + android:layout_width="match_parent" + android:layout_height="1dp" + android:background="?attr/colorBackgroundFloating" + android:foreground="?attr/dividerVertical" /> <ListView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/resolver_list" android:clipToPadding="false" - android:scrollbarStyle="outsideOverlay" android:background="?attr/colorBackgroundFloating" - android:elevation="8dp" + android:elevation="@dimen/resolver_elevation" android:nestedScrollingEnabled="true" + android:scrollbarStyle="outsideOverlay" android:scrollIndicators="top|bottom" - android:divider="@null" /> + android:divider="?attr/dividerVertical" + android:footerDividersEnabled="false" + android:headerDividersEnabled="false" + android:dividerHeight="1dp" /> + <View + android:layout_alwaysShow="true" + android:layout_width="match_parent" + android:layout_height="1dp" + android:background="?attr/colorBackgroundFloating" + android:foreground="?attr/dividerVertical" /> + <TextView android:id="@+id/empty" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorBackgroundFloating" - android:elevation="8dp" + android:elevation="@dimen/resolver_elevation" android:layout_alwaysShow="true" android:text="@string/noApplications" android:padding="32dp" @@ -102,18 +117,19 @@ android:background="?attr/colorBackgroundFloating" android:paddingTop="@dimen/resolver_button_bar_spacing" android:paddingBottom="@dimen/resolver_button_bar_spacing" - android:paddingStart="12dp" - android:paddingEnd="12dp" - android:elevation="8dp"> + android:paddingStart="@dimen/resolver_edge_margin" + android:paddingEnd="@dimen/resolver_small_margin" + android:elevation="@dimen/resolver_elevation"> <Button android:id="@+id/button_once" android:layout_width="wrap_content" android:layout_gravity="start" android:maxLines="2" - style="?attr/buttonBarNegativeButtonStyle" - android:minHeight="@dimen/alert_dialog_button_bar_height" + style="?attr/buttonBarButtonStyle" + android:fontFamily="@android:string/config_headlineFontFamilyMedium" android:layout_height="wrap_content" + android:textAllCaps="false" android:enabled="false" android:text="@string/activity_resolver_use_once" android:onClick="onButtonClick" /> @@ -123,8 +139,9 @@ android:layout_width="wrap_content" android:layout_gravity="end" android:maxLines="2" - android:minHeight="@dimen/alert_dialog_button_bar_height" - style="?attr/buttonBarPositiveButtonStyle" + style="?attr/buttonBarButtonStyle" + android:fontFamily="@android:string/config_headlineFontFamilyMedium" + android:textAllCaps="false" android:layout_height="wrap_content" android:enabled="false" android:text="@string/activity_resolver_use_always" diff --git a/core/res/res/layout/resolver_list_with_default.xml b/core/res/res/layout/resolver_list_with_default.xml index 740a7eb9374e..dbba0b7bcc25 100644 --- a/core/res/res/layout/resolver_list_with_default.xml +++ b/core/res/res/layout/resolver_list_with_default.xml @@ -29,22 +29,22 @@ android:layout_height="wrap_content" android:layout_alwaysShow="true" android:orientation="vertical" - android:background="?attr/colorBackgroundFloating" - android:elevation="8dp"> + android:background="@drawable/bottomsheet_background" + android:paddingTop="@dimen/resolver_small_margin" + android:elevation="@dimen/resolver_elevation"> <LinearLayout android:layout_width="match_parent" - android:layout_height="64dp" - android:orientation="horizontal"> - + android:layout_height="wrap_content" + android:orientation="horizontal" + android:paddingBottom="@dimen/resolver_edge_margin" + android:paddingEnd="@dimen/resolver_edge_margin"> <ImageView android:id="@+id/icon" - android:layout_width="24dp" - android:layout_height="24dp" + android:layout_width="@dimen/resolver_icon_size" + android:layout_height="@dimen/resolver_icon_size" android:layout_gravity="start|top" - android:layout_marginStart="16dp" - android:layout_marginEnd="16dp" - android:layout_marginTop="20dp" + android:layout_marginStart="@dimen/resolver_icon_margin" android:src="@drawable/resolver_icon_placeholder" android:scaleType="fitCenter" /> @@ -52,9 +52,11 @@ android:id="@+id/title" android:layout_width="0dp" android:layout_weight="1" - android:layout_height="?attr/listPreferredItemHeight" - android:layout_marginStart="16dp" - android:textAppearance="?attr/textAppearanceMedium" + android:layout_height="wrap_content" + android:layout_marginStart="@dimen/resolver_icon_margin" + android:textColor="?android:attr/textColorPrimary" + android:fontFamily="@android:string/config_headlineFontFamilyMedium" + android:textSize="16sp" android:gravity="start|center_vertical" android:paddingEnd="16dp" /> @@ -107,21 +109,22 @@ android:orientation="horizontal" android:layoutDirection="locale" android:measureWithLargestChild="true" - android:paddingTop="8dp" - android:paddingBottom="8dp" - android:paddingStart="12dp" - android:paddingEnd="12dp" - android:elevation="8dp"> + android:paddingTop="@dimen/resolver_button_bar_spacing" + android:paddingBottom="@dimen/resolver_button_bar_spacing" + android:paddingStart="@dimen/resolver_edge_margin" + android:paddingEnd="@dimen/resolver_small_margin" + android:elevation="@dimen/resolver_elevation"> <Button android:id="@+id/button_once" android:layout_width="wrap_content" android:layout_gravity="start" android:maxLines="2" - style="?attr/buttonBarNegativeButtonStyle" - android:minHeight="@dimen/alert_dialog_button_bar_height" + style="?attr/buttonBarButtonStyle" + android:fontFamily="@android:string/config_headlineFontFamilyMedium" android:layout_height="wrap_content" android:enabled="false" + android:textAllCaps="false" android:text="@string/activity_resolver_use_once" android:onClick="onButtonClick" /> @@ -130,29 +133,40 @@ android:layout_width="wrap_content" android:layout_gravity="end" android:maxLines="2" - android:minHeight="@dimen/alert_dialog_button_bar_height" - style="?attr/buttonBarPositiveButtonStyle" + style="?attr/buttonBarButtonStyle" + android:fontFamily="@android:string/config_headlineFontFamilyMedium" android:layout_height="wrap_content" android:enabled="false" + android:textAllCaps="false" android:text="@string/activity_resolver_use_always" android:onClick="onButtonClick" /> </LinearLayout> - - <View - android:layout_width="match_parent" - android:layout_height="1dp" - android:background="?attr/dividerVertical" /> </LinearLayout> + <View + android:layout_alwaysShow="true" + android:layout_width="match_parent" + android:layout_height="1dp" + android:background="?attr/colorBackgroundFloating" + android:foreground="?attr/dividerVertical" /> <ListView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/resolver_list" android:clipToPadding="false" - android:scrollbarStyle="outsideOverlay" android:background="?attr/colorBackgroundFloating" - android:elevation="8dp" + android:elevation="@dimen/resolver_elevation" android:nestedScrollingEnabled="true" - android:divider="@null" /> - + android:scrollbarStyle="outsideOverlay" + android:scrollIndicators="top|bottom" + android:divider="?attr/dividerVertical" + android:footerDividersEnabled="false" + android:headerDividersEnabled="false" + android:dividerHeight="1dp" /> + <View + android:layout_alwaysShow="true" + android:layout_width="match_parent" + android:layout_height="1dp" + android:background="?attr/colorBackgroundFloating" + android:foreground="?attr/dividerVertical" /> </com.android.internal.widget.ResolverDrawerLayout> diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml index 609659b62948..a01bbe38f296 100644 --- a/core/res/res/values/dimens.xml +++ b/core/res/res/values/dimens.xml @@ -750,7 +750,7 @@ <dimen name="seekbar_thumb_exclusion_max_size">48dp</dimen> - <!-- chooser (sharesheet) spacing --> + <!-- chooser/resolver (sharesheet) spacing --> <dimen name="chooser_corner_radius">8dp</dimen> <dimen name="chooser_row_text_option_translate">25dp</dimen> <dimen name="chooser_view_spacing">18dp</dimen> @@ -759,11 +759,15 @@ <dimen name="chooser_preview_image_font_size">20sp</dimen> <dimen name="chooser_preview_image_border">1dp</dimen> <dimen name="chooser_preview_width">-1px</dimen> - <dimen name="resolver_icon_size">42dp</dimen> - <dimen name="resolver_button_bar_spacing">8dp</dimen> - <dimen name="resolver_badge_size">18dp</dimen> <dimen name="chooser_target_width">90dp</dimen> <dimen name="chooser_header_scroll_elevation">4dp</dimen> <dimen name="chooser_max_collapsed_height">288dp</dimen> <dimen name="chooser_direct_share_label_placeholder_max_width">72dp</dimen> + <dimen name="resolver_icon_size">32dp</dimen> + <dimen name="resolver_button_bar_spacing">8dp</dimen> + <dimen name="resolver_badge_size">18dp</dimen> + <dimen name="resolver_icon_margin">16dp</dimen> + <dimen name="resolver_small_margin">18dp</dimen> + <dimen name="resolver_edge_margin">24dp</dimen> + <dimen name="resolver_elevation">1dp</dimen> </resources> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 363bc9ddd75c..c5a0dfca4bd1 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -3819,6 +3819,10 @@ <java-symbol type="dimen" name="resolver_icon_size"/> <java-symbol type="dimen" name="resolver_badge_size"/> <java-symbol type="dimen" name="resolver_button_bar_spacing"/> + <java-symbol type="dimen" name="resolver_icon_margin"/> + <java-symbol type="dimen" name="resolver_small_margin"/> + <java-symbol type="dimen" name="resolver_edge_margin"/> + <java-symbol type="dimen" name="resolver_elevation"/> <!-- For DropBox --> <java-symbol type="integer" name="config_dropboxLowPriorityBroadcastRateLimitPeriod" /> diff --git a/data/etc/car/com.google.android.car.kitchensink.xml b/data/etc/car/com.google.android.car.kitchensink.xml index d36a82684e9e..61281eea7134 100644 --- a/data/etc/car/com.google.android.car.kitchensink.xml +++ b/data/etc/car/com.google.android.car.kitchensink.xml @@ -16,17 +16,30 @@ --> <permissions> <privapp-permissions package="com.google.android.car.kitchensink"> + <permission name="android.permission.ACCESS_NETWORK_STATE"/> + <permission name="android.permission.ACCESS_WIFI_STATE"/> + <permission name="android.permission.ACTIVITY_EMBEDDING"/> + <permission name="android.permission.INJECT_EVENTS"/> + <!-- use for CarServiceUnitTest and CarServiceTest --> + <permission name="android.permission.INTERACT_ACROSS_USERS"/> + <!-- use for CarServiceUnitTest --> + <permission name="android.permission.INTERACT_ACROSS_USERS_FULL"/> <permission name="android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS"/> <permission name="android.permission.LOCATION_HARDWARE"/> <permission name="android.permission.MANAGE_USB"/> <permission name="android.permission.MANAGE_USERS"/> + <!-- use for CarServiceTest --> + <permission name="android.permission.MEDIA_CONTENT_CONTROL"/> <permission name="android.permission.MODIFY_AUDIO_ROUTING"/> <permission name="android.permission.MODIFY_DAY_NIGHT_MODE"/> <permission name="android.permission.MODIFY_PHONE_STATE"/> <permission name="android.permission.PROVIDE_TRUST_AGENT"/> + <permission name="android.permission.OVERRIDE_WIFI_CONFIG"/> <permission name="android.permission.REAL_GET_TASKS"/> <permission name="android.permission.READ_LOGS"/> <permission name="android.permission.REBOOT"/> + <!-- use for CarServiceTest --> + <permission name="android.permission.SET_ACTIVITY_WATCHER"/> <permission name="android.permission.WRITE_SECURE_SETTINGS"/> </privapp-permissions> </permissions> diff --git a/location/java/android/location/Location.java b/location/java/android/location/Location.java index 9c36d76cf370..6824be8e1e3b 100644 --- a/location/java/android/location/Location.java +++ b/location/java/android/location/Location.java @@ -16,6 +16,7 @@ package android.location; +import android.annotation.Nullable; import android.annotation.SystemApi; import android.annotation.TestApi; import android.annotation.UnsupportedAppUsage; @@ -79,6 +80,8 @@ public class Location implements Parcelable { * * @hide */ + @TestApi + @SystemApi public static final String EXTRA_NO_GPS_LOCATION = "noGPSLocation"; /** @@ -1214,8 +1217,9 @@ public class Location implements Parcelable { * @param value the Location to attach * @hide */ - @UnsupportedAppUsage - public void setExtraLocation(String key, Location value) { + @TestApi + @SystemApi + public void setExtraLocation(@Nullable String key, @Nullable Location value) { if (mExtras == null) { mExtras = new Bundle(); } diff --git a/packages/PackageInstaller/res/values-television/themes.xml b/packages/PackageInstaller/res/values-television/themes.xml new file mode 100644 index 000000000000..5ae4957b494d --- /dev/null +++ b/packages/PackageInstaller/res/values-television/themes.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2019 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 + --> + +<resources> + + <style name="Theme.AlertDialogActivity.NoAnimation"> + <item name="android:windowAnimationStyle">@null</item> + </style> + + <style name="Theme.AlertDialogActivity" + parent="@android:style/Theme.DeviceDefault.Light.Dialog.Alert" /> + + <style name="Theme.AlertDialogActivity.NoActionBar" + parent="@android:style/Theme.DeviceDefault.Light.NoActionBar"> + </style> + +</resources> diff --git a/telephony/java/android/telephony/SmsManager.java b/telephony/java/android/telephony/SmsManager.java index f4330fa0b725..2d35f8eae816 100644 --- a/telephony/java/android/telephony/SmsManager.java +++ b/telephony/java/android/telephony/SmsManager.java @@ -1814,6 +1814,36 @@ public final class SmsManager { // SMS send failure result codes + /** @hide */ + @IntDef(prefix = { "RESULT" }, value = { + RESULT_ERROR_NONE, + RESULT_ERROR_GENERIC_FAILURE, + RESULT_ERROR_RADIO_OFF, + RESULT_ERROR_NULL_PDU, + RESULT_ERROR_NO_SERVICE, + RESULT_ERROR_LIMIT_EXCEEDED, + RESULT_ERROR_FDN_CHECK_FAILURE, + RESULT_ERROR_SHORT_CODE_NOT_ALLOWED, + RESULT_ERROR_SHORT_CODE_NEVER_ALLOWED, + RESULT_RADIO_NOT_AVAILABLE, + RESULT_NETWORK_REJECT, + RESULT_INVALID_ARGUMENTS, + RESULT_INVALID_STATE, + RESULT_NO_MEMORY, + RESULT_INVALID_SMS_FORMAT, + RESULT_SYSTEM_ERROR, + RESULT_MODEM_ERROR, + RESULT_NETWORK_ERROR, + RESULT_INVALID_SMSC_ADDRESS, + RESULT_OPERATION_NOT_ALLOWED, + RESULT_INTERNAL_ERROR, + RESULT_NO_RESOURCES, + RESULT_CANCELLED, + RESULT_REQUEST_NOT_SUPPORTED + }) + @Retention(RetentionPolicy.SOURCE) + public @interface Result {} + /** * No error. * @hide diff --git a/telephony/java/android/telephony/ims/stub/ImsSmsImplBase.java b/telephony/java/android/telephony/ims/stub/ImsSmsImplBase.java index 175769bd34e4..36ece958d501 100644 --- a/telephony/java/android/telephony/ims/stub/ImsSmsImplBase.java +++ b/telephony/java/android/telephony/ims/stub/ImsSmsImplBase.java @@ -17,6 +17,7 @@ package android.telephony.ims.stub; import android.annotation.IntDef; +import android.annotation.IntRange; import android.annotation.SystemApi; import android.os.RemoteException; import android.telephony.SmsManager; @@ -148,14 +149,16 @@ public class ImsSmsImplBase { * * @param token unique token generated by the platform that should be used when triggering * callbacks for this specific message. - * @param messageRef the message reference. - * @param format the format of the message. Valid values are {@link SmsMessage#FORMAT_3GPP} and - * {@link SmsMessage#FORMAT_3GPP2}. + * @param messageRef the message reference, which may be 1 byte if it is in + * {@link SmsMessage#FORMAT_3GPP} format (see TS.123.040) or 2 bytes if it is in + * {@link SmsMessage#FORMAT_3GPP2} format (see 3GPP2 C.S0015-B). + * @param format the format of the message. * @param smsc the Short Message Service Center address. * @param isRetry whether it is a retry of an already attempted message or not. * @param pdu PDU representing the contents of the message. */ - public void sendSms(int token, int messageRef, String format, String smsc, boolean isRetry, + public void sendSms(int token, @IntRange(from = 0, to = 65535) int messageRef, + @SmsMessage.Format String format, String smsc, boolean isRetry, byte[] pdu) { // Base implementation returns error. Should be overridden. try { @@ -172,14 +175,13 @@ public class ImsSmsImplBase { * provider. * * @param token token provided in {@link #onSmsReceived(int, String, byte[])} - * @param messageRef the message reference - * @param result result of delivering the message. Valid values are: - * {@link #DELIVER_STATUS_OK}, - * {@link #DELIVER_STATUS_ERROR_GENERIC}, - * {@link #DELIVER_STATUS_ERROR_NO_MEMORY}, - * {@link #DELIVER_STATUS_ERROR_REQUEST_NOT_SUPPORTED} + * @param messageRef the message reference, which may be 1 byte if it is in + * {@link SmsMessage#FORMAT_3GPP} format (see TS.123.040) or 2 bytes if it is in + * {@link SmsMessage#FORMAT_3GPP2} format (see 3GPP2 C.S0015-B). + * @param result result of delivering the message. */ - public void acknowledgeSms(int token, int messageRef, @DeliverStatusResult int result) { + public void acknowledgeSms(int token, @IntRange(from = 0, to = 65535) int messageRef, + @DeliverStatusResult int result) { Log.e(LOG_TAG, "acknowledgeSms() not implemented."); } @@ -191,12 +193,13 @@ public class ImsSmsImplBase { * * @param token token provided in {@link #onSmsStatusReportReceived(int, int, String, byte[])} * or {@link #onSmsStatusReportReceived(int, String, byte[])} - * @param messageRef the message reference - * @param result result of delivering the message. Valid values are: - * {@link #STATUS_REPORT_STATUS_OK}, - * {@link #STATUS_REPORT_STATUS_ERROR} + * @param messageRef the message reference, which may be 1 byte if it is in + * {@link SmsMessage#FORMAT_3GPP} format (see TS.123.040) or 2 bytes if it is in + * {@link SmsMessage#FORMAT_3GPP2} format (see 3GPP2 C.S0015-B). + * @param result result of delivering the message. */ - public void acknowledgeSmsReport(int token, int messageRef, @StatusReportResult int result) { + public void acknowledgeSmsReport(int token, @IntRange(from = 0, to = 65535) int messageRef, + @StatusReportResult int result) { Log.e(LOG_TAG, "acknowledgeSmsReport() not implemented."); } @@ -210,12 +213,12 @@ public class ImsSmsImplBase { * {@link #DELIVER_STATUS_ERROR_GENERIC} result code. * @param token unique token generated by IMS providers that the platform will use to trigger * callbacks for this message. - * @param format the format of the message. Valid values are {@link SmsMessage#FORMAT_3GPP} and - * {@link SmsMessage#FORMAT_3GPP2}. + * @param format the format of the message. * @param pdu PDU representing the contents of the message. * @throws RuntimeException if called before {@link #onReady()} is triggered. */ - public final void onSmsReceived(int token, String format, byte[] pdu) throws RuntimeException { + public final void onSmsReceived(int token, @SmsMessage.Format String format, byte[] pdu) + throws RuntimeException { synchronized (mLock) { if (mListener == null) { throw new RuntimeException("Feature not ready."); @@ -241,13 +244,16 @@ public class ImsSmsImplBase { * sent successfully. * * @param token token provided in {@link #sendSms(int, int, String, String, boolean, byte[])} - * @param messageRef the message reference. Should be between 0 and 255 per TS.123.040 + * @param messageRef the message reference, which may be 1 byte if it is in + * {@link SmsMessage#FORMAT_3GPP} format (see TS.123.040) or 2 bytes if it is in + * {@link SmsMessage#FORMAT_3GPP2} format (see 3GPP2 C.S0015-B). * * @throws RuntimeException if called before {@link #onReady()} is triggered or if the * connection to the framework is not available. If this happens attempting to send the SMS * should be aborted. */ - public final void onSendSmsResultSuccess(int token, int messageRef) throws RuntimeException { + public final void onSendSmsResultSuccess(int token, + @IntRange(from = 0, to = 65535) int messageRef) throws RuntimeException { synchronized (mLock) { if (mListener == null) { throw new RuntimeException("Feature not ready."); @@ -266,34 +272,11 @@ public class ImsSmsImplBase { * to the platform. * * @param token token provided in {@link #sendSms(int, int, String, String, boolean, byte[])} - * @param messageRef the message reference. Should be between 0 and 255 per TS.123.040 + * @param messageRef the message reference, which may be 1 byte if it is in + * {@link SmsMessage#FORMAT_3GPP} format (see TS.123.040) or 2 bytes if it is in + * {@link SmsMessage#FORMAT_3GPP2} format (see 3GPP2 C.S0015-B). * @param status result of sending the SMS. - * @param reason reason in case status is failure. Valid values are: - * {@link SmsManager#RESULT_ERROR_NONE}, - * {@link SmsManager#RESULT_ERROR_GENERIC_FAILURE}, - * {@link SmsManager#RESULT_ERROR_RADIO_OFF}, - * {@link SmsManager#RESULT_ERROR_NULL_PDU}, - * {@link SmsManager#RESULT_ERROR_NO_SERVICE}, - * {@link SmsManager#RESULT_ERROR_LIMIT_EXCEEDED}, - * {@link SmsManager#RESULT_ERROR_FDN_CHECK_FAILURE}, - * {@link SmsManager#RESULT_ERROR_SHORT_CODE_NOT_ALLOWED}, - * {@link SmsManager#RESULT_ERROR_SHORT_CODE_NEVER_ALLOWED}, - * {@link SmsManager#RESULT_RADIO_NOT_AVAILABLE}, - * {@link SmsManager#RESULT_NETWORK_REJECT}, - * {@link SmsManager#RESULT_INVALID_ARGUMENTS}, - * {@link SmsManager#RESULT_INVALID_STATE}, - * {@link SmsManager#RESULT_NO_MEMORY}, - * {@link SmsManager#RESULT_INVALID_SMS_FORMAT}, - * {@link SmsManager#RESULT_SYSTEM_ERROR}, - * {@link SmsManager#RESULT_MODEM_ERROR}, - * {@link SmsManager#RESULT_NETWORK_ERROR}, - * {@link SmsManager#RESULT_ENCODING_ERROR}, - * {@link SmsManager#RESULT_INVALID_SMSC_ADDRESS}, - * {@link SmsManager#RESULT_OPERATION_NOT_ALLOWED}, - * {@link SmsManager#RESULT_INTERNAL_ERROR}, - * {@link SmsManager#RESULT_NO_RESOURCES}, - * {@link SmsManager#RESULT_CANCELLED}, - * {@link SmsManager#RESULT_REQUEST_NOT_SUPPORTED} + * @param reason reason in case status is failure. * * @throws RuntimeException if called before {@link #onReady()} is triggered or if the * connection to the framework is not available. If this happens attempting to send the SMS @@ -303,8 +286,8 @@ public class ImsSmsImplBase { * send result. */ @Deprecated - public final void onSendSmsResult(int token, int messageRef, @SendStatusResult int status, - int reason) throws RuntimeException { + public final void onSendSmsResult(int token, @IntRange(from = 0, to = 65535) int messageRef, + @SendStatusResult int status, @SmsManager.Result int reason) throws RuntimeException { synchronized (mLock) { if (mListener == null) { throw new RuntimeException("Feature not ready."); @@ -324,34 +307,10 @@ public class ImsSmsImplBase { * network. * * @param token token provided in {@link #sendSms(int, int, String, String, boolean, byte[])} - * @param messageRef the message reference. Should be between 0 and 255 per TS.123.040 + * @param messageRef the message reference, which may be 1 byte if it is in + * {@link SmsMessage#FORMAT_3GPP} format (see TS.123.040) or 2 bytes if it is in + * {@link SmsMessage#FORMAT_3GPP2} format (see 3GPP2 C.S0015-B). * @param status result of sending the SMS. - * @param reason Valid values are: - * {@link SmsManager#RESULT_ERROR_NONE}, - * {@link SmsManager#RESULT_ERROR_GENERIC_FAILURE}, - * {@link SmsManager#RESULT_ERROR_RADIO_OFF}, - * {@link SmsManager#RESULT_ERROR_NULL_PDU}, - * {@link SmsManager#RESULT_ERROR_NO_SERVICE}, - * {@link SmsManager#RESULT_ERROR_LIMIT_EXCEEDED}, - * {@link SmsManager#RESULT_ERROR_FDN_CHECK_FAILURE}, - * {@link SmsManager#RESULT_ERROR_SHORT_CODE_NOT_ALLOWED}, - * {@link SmsManager#RESULT_ERROR_SHORT_CODE_NEVER_ALLOWED}, - * {@link SmsManager#RESULT_RADIO_NOT_AVAILABLE}, - * {@link SmsManager#RESULT_NETWORK_REJECT}, - * {@link SmsManager#RESULT_INVALID_ARGUMENTS}, - * {@link SmsManager#RESULT_INVALID_STATE}, - * {@link SmsManager#RESULT_NO_MEMORY}, - * {@link SmsManager#RESULT_INVALID_SMS_FORMAT}, - * {@link SmsManager#RESULT_SYSTEM_ERROR}, - * {@link SmsManager#RESULT_MODEM_ERROR}, - * {@link SmsManager#RESULT_NETWORK_ERROR}, - * {@link SmsManager#RESULT_ENCODING_ERROR}, - * {@link SmsManager#RESULT_INVALID_SMSC_ADDRESS}, - * {@link SmsManager#RESULT_OPERATION_NOT_ALLOWED}, - * {@link SmsManager#RESULT_INTERNAL_ERROR}, - * {@link SmsManager#RESULT_NO_RESOURCES}, - * {@link SmsManager#RESULT_CANCELLED}, - * {@link SmsManager#RESULT_REQUEST_NOT_SUPPORTED} * @param networkErrorCode the error code reported by the carrier network if sending this SMS * has resulted in an error or {@link #RESULT_NO_NETWORK_ERROR} if no network error was * generated. See 3GPP TS 24.011 Section 7.3.4 for valid error codes and more information. @@ -360,9 +319,9 @@ public class ImsSmsImplBase { * connection to the framework is not available. If this happens attempting to send the SMS * should be aborted. */ - public final void onSendSmsResultError(int token, int messageRef, @SendStatusResult int status, - int reason, int networkErrorCode) - throws RuntimeException { + public final void onSendSmsResultError(int token, + @IntRange(from = 0, to = 65535) int messageRef, @SendStatusResult int status, + @SmsManager.Result int reason, int networkErrorCode) throws RuntimeException { synchronized (mLock) { if (mListener == null) { throw new RuntimeException("Feature not ready."); @@ -384,9 +343,10 @@ public class ImsSmsImplBase { * the platform is not available, {@link #acknowledgeSmsReport(int, int, int)} will be called * with the {@link #STATUS_REPORT_STATUS_ERROR} result code. * @param token token provided in {@link #sendSms(int, int, String, String, boolean, byte[])} - * @param messageRef the message reference. - * @param format the format of the message. Valid values are {@link SmsMessage#FORMAT_3GPP} and - * {@link SmsMessage#FORMAT_3GPP2}. + * @param messageRef the message reference, which may be 1 byte if it is in + * {@link SmsMessage#FORMAT_3GPP} format or 2 bytes if it is in + * {@link SmsMessage#FORMAT_3GPP2} format (see 3GPP2 C.S0015-B). + * @param format the format of the message. * @param pdu PDU representing the content of the status report. * @throws RuntimeException if called before {@link #onReady()} is triggered * @@ -394,7 +354,8 @@ public class ImsSmsImplBase { * message reference. */ @Deprecated - public final void onSmsStatusReportReceived(int token, int messageRef, String format, + public final void onSmsStatusReportReceived(int token, + @IntRange(from = 0, to = 65535) int messageRef, @SmsMessage.Format String format, byte[] pdu) throws RuntimeException { synchronized (mLock) { if (mListener == null) { @@ -419,13 +380,12 @@ public class ImsSmsImplBase { * with the {@link #STATUS_REPORT_STATUS_ERROR} result code. * @param token unique token generated by IMS providers that the platform will use to trigger * callbacks for this message. - * @param format the format of the message. Valid values are {@link SmsMessage#FORMAT_3GPP} and - * {@link SmsMessage#FORMAT_3GPP2}. + * @param format the format of the message. * @param pdu PDU representing the content of the status report. * @throws RuntimeException if called before {@link #onReady()} is triggered */ - public final void onSmsStatusReportReceived(int token, String format, byte[] pdu) - throws RuntimeException { + public final void onSmsStatusReportReceived(int token, @SmsMessage.Format String format, + byte[] pdu) throws RuntimeException { synchronized (mLock) { if (mListener == null) { throw new RuntimeException("Feature not ready."); @@ -450,13 +410,11 @@ public class ImsSmsImplBase { } /** - * Returns the SMS format. Default is {@link SmsMessage#FORMAT_3GPP} unless overridden by IMS - * Provider. + * Returns the SMS format that the ImsService expects. * - * @return the format of the message. Valid values are {@link SmsMessage#FORMAT_3GPP} and - * {@link SmsMessage#FORMAT_3GPP2}. + * @return The expected format of the SMS messages. */ - public String getSmsFormat() { + public @SmsMessage.Format String getSmsFormat() { return SmsMessage.FORMAT_3GPP; } |