System API annotation and API .txt changes
New APIs are being exposed for use by SetUp Wizard, which requires System APIs. The APIs enable the calling app to determine the capabilities for / config of the current user that affect time zone detection and then alter them. This commit also contains changes to the Shell package needed for the CTS tests being added to test the new APIs. See the associated CTS commit for details. The primary usecase: The rules for who can do what and when for time zone detection are becoming more complicated, and device and user capabilities will be affected by compile time constants, device config (resources) and device hardware. By exposing this API, the complex logic can be encoded in one place (the system server), rather than duplicating them in multiple client apps. These APIs are also intended for use by SettingsUI (and the various form factor versions of that), but settings apps do not require them to be marked with @SystemApi. Bug: 159891384 Test: atest CtsTimeTestCases Change-Id: I1eb6a68a74217106f81cb9525ad9370c805eecf2
This commit is contained in:
@@ -125,6 +125,7 @@ package android {
|
||||
field public static final String MANAGE_SENSOR_PRIVACY = "android.permission.MANAGE_SENSOR_PRIVACY";
|
||||
field public static final String MANAGE_SOUND_TRIGGER = "android.permission.MANAGE_SOUND_TRIGGER";
|
||||
field public static final String MANAGE_SUBSCRIPTION_PLANS = "android.permission.MANAGE_SUBSCRIPTION_PLANS";
|
||||
field public static final String MANAGE_TIME_AND_ZONE_DETECTION = "android.permission.MANAGE_TIME_AND_ZONE_DETECTION";
|
||||
field public static final String MANAGE_USB = "android.permission.MANAGE_USB";
|
||||
field public static final String MANAGE_USERS = "android.permission.MANAGE_USERS";
|
||||
field public static final String MANAGE_USER_OEM_UNLOCK_STATE = "android.permission.MANAGE_USER_OEM_UNLOCK_STATE";
|
||||
@@ -1389,6 +1390,57 @@ package android.app.role {
|
||||
|
||||
}
|
||||
|
||||
package android.app.time {
|
||||
|
||||
public final class TimeManager {
|
||||
method @RequiresPermission(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION) public void addTimeZoneDetectorListener(@NonNull java.util.concurrent.Executor, @NonNull android.app.time.TimeManager.TimeZoneDetectorListener);
|
||||
method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION) public android.app.time.TimeZoneCapabilitiesAndConfig getTimeZoneCapabilitiesAndConfig();
|
||||
method @RequiresPermission(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION) public void removeTimeZoneDetectorListener(@NonNull android.app.time.TimeManager.TimeZoneDetectorListener);
|
||||
method @RequiresPermission(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION) public boolean updateTimeZoneConfiguration(@NonNull android.app.time.TimeZoneConfiguration);
|
||||
}
|
||||
|
||||
@java.lang.FunctionalInterface public static interface TimeManager.TimeZoneDetectorListener {
|
||||
method public void onChange();
|
||||
}
|
||||
|
||||
public final class TimeZoneCapabilities implements android.os.Parcelable {
|
||||
method public int describeContents();
|
||||
method public int getConfigureAutoDetectionEnabledCapability();
|
||||
method public int getConfigureGeoDetectionEnabledCapability();
|
||||
method public void writeToParcel(@NonNull android.os.Parcel, int);
|
||||
field public static final int CAPABILITY_NOT_ALLOWED = 20; // 0x14
|
||||
field public static final int CAPABILITY_NOT_APPLICABLE = 30; // 0x1e
|
||||
field public static final int CAPABILITY_NOT_SUPPORTED = 10; // 0xa
|
||||
field public static final int CAPABILITY_POSSESSED = 40; // 0x28
|
||||
field @NonNull public static final android.os.Parcelable.Creator<android.app.time.TimeZoneCapabilities> CREATOR;
|
||||
}
|
||||
|
||||
public final class TimeZoneCapabilitiesAndConfig implements android.os.Parcelable {
|
||||
method public int describeContents();
|
||||
method @NonNull public android.app.time.TimeZoneCapabilities getCapabilities();
|
||||
method @NonNull public android.app.time.TimeZoneConfiguration getConfiguration();
|
||||
method public void writeToParcel(@NonNull android.os.Parcel, int);
|
||||
field @NonNull public static final android.os.Parcelable.Creator<android.app.time.TimeZoneCapabilitiesAndConfig> CREATOR;
|
||||
}
|
||||
|
||||
public final class TimeZoneConfiguration implements android.os.Parcelable {
|
||||
method public int describeContents();
|
||||
method public boolean isAutoDetectionEnabled();
|
||||
method public boolean isGeoDetectionEnabled();
|
||||
method public void writeToParcel(@NonNull android.os.Parcel, int);
|
||||
field @NonNull public static final android.os.Parcelable.Creator<android.app.time.TimeZoneConfiguration> CREATOR;
|
||||
}
|
||||
|
||||
public static final class TimeZoneConfiguration.Builder {
|
||||
ctor public TimeZoneConfiguration.Builder();
|
||||
ctor public TimeZoneConfiguration.Builder(@NonNull android.app.time.TimeZoneConfiguration);
|
||||
method @NonNull public android.app.time.TimeZoneConfiguration build();
|
||||
method @NonNull public android.app.time.TimeZoneConfiguration.Builder setAutoDetectionEnabled(boolean);
|
||||
method @NonNull public android.app.time.TimeZoneConfiguration.Builder setGeoDetectionEnabled(boolean);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
package android.app.usage {
|
||||
|
||||
public final class CacheQuotaHint implements android.os.Parcelable {
|
||||
|
||||
@@ -18,6 +18,7 @@ package android.app.time;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.RequiresPermission;
|
||||
import android.annotation.SystemApi;
|
||||
import android.annotation.SystemService;
|
||||
import android.app.timezonedetector.ITimeZoneDetectorService;
|
||||
import android.content.Context;
|
||||
@@ -36,7 +37,7 @@ import java.util.concurrent.Executor;
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
// @SystemApi
|
||||
@SystemApi
|
||||
@SystemService(Context.TIME_MANAGER)
|
||||
public final class TimeManager {
|
||||
private static final String TAG = "time.TimeManager";
|
||||
|
||||
@@ -19,6 +19,7 @@ package android.app.time;
|
||||
import android.annotation.IntDef;
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.annotation.SystemApi;
|
||||
import android.app.timezonedetector.ManualTimeZoneSuggestion;
|
||||
import android.app.timezonedetector.TimeZoneDetector;
|
||||
import android.os.Parcel;
|
||||
@@ -50,7 +51,7 @@ import java.util.Objects;
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
// @SystemApi
|
||||
@SystemApi
|
||||
public final class TimeZoneCapabilities implements Parcelable {
|
||||
|
||||
/** @hide */
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package android.app.time;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.SystemApi;
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
|
||||
@@ -27,7 +28,7 @@ import java.util.Objects;
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
// @SystemApi
|
||||
@SystemApi
|
||||
public final class TimeZoneCapabilitiesAndConfig implements Parcelable {
|
||||
|
||||
public static final @NonNull Creator<TimeZoneCapabilitiesAndConfig> CREATOR =
|
||||
|
||||
@@ -18,6 +18,7 @@ package android.app.time;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.StringDef;
|
||||
import android.annotation.SystemApi;
|
||||
import android.os.Bundle;
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
@@ -41,7 +42,7 @@ import java.util.Objects;
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
// @SystemApi
|
||||
@SystemApi
|
||||
public final class TimeZoneConfiguration implements Parcelable {
|
||||
|
||||
public static final @NonNull Creator<TimeZoneConfiguration> CREATOR =
|
||||
@@ -188,7 +189,7 @@ public final class TimeZoneConfiguration implements Parcelable {
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
// @SystemApi
|
||||
@SystemApi
|
||||
public static final class Builder {
|
||||
|
||||
private final Bundle mBundle = new Bundle();
|
||||
|
||||
@@ -2690,7 +2690,7 @@
|
||||
<!-- Allows applications like settings to manage configuration associated with automatic time
|
||||
and time zone detection.
|
||||
<p>Not for use by third-party applications.
|
||||
@hide
|
||||
@SystemApi @hide
|
||||
-->
|
||||
<permission android:name="android.permission.MANAGE_TIME_AND_ZONE_DETECTION"
|
||||
android:protectionLevel="signature|privileged" />
|
||||
|
||||
@@ -125,6 +125,7 @@ package android {
|
||||
field public static final String MANAGE_SENSOR_PRIVACY = "android.permission.MANAGE_SENSOR_PRIVACY";
|
||||
field public static final String MANAGE_SOUND_TRIGGER = "android.permission.MANAGE_SOUND_TRIGGER";
|
||||
field public static final String MANAGE_SUBSCRIPTION_PLANS = "android.permission.MANAGE_SUBSCRIPTION_PLANS";
|
||||
field public static final String MANAGE_TIME_AND_ZONE_DETECTION = "android.permission.MANAGE_TIME_AND_ZONE_DETECTION";
|
||||
field public static final String MANAGE_USB = "android.permission.MANAGE_USB";
|
||||
field public static final String MANAGE_USERS = "android.permission.MANAGE_USERS";
|
||||
field public static final String MANAGE_USER_OEM_UNLOCK_STATE = "android.permission.MANAGE_USER_OEM_UNLOCK_STATE";
|
||||
@@ -1329,6 +1330,57 @@ package android.app.role {
|
||||
|
||||
}
|
||||
|
||||
package android.app.time {
|
||||
|
||||
public final class TimeManager {
|
||||
method @RequiresPermission(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION) public void addTimeZoneDetectorListener(@NonNull java.util.concurrent.Executor, @NonNull android.app.time.TimeManager.TimeZoneDetectorListener);
|
||||
method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION) public android.app.time.TimeZoneCapabilitiesAndConfig getTimeZoneCapabilitiesAndConfig();
|
||||
method @RequiresPermission(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION) public void removeTimeZoneDetectorListener(@NonNull android.app.time.TimeManager.TimeZoneDetectorListener);
|
||||
method @RequiresPermission(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION) public boolean updateTimeZoneConfiguration(@NonNull android.app.time.TimeZoneConfiguration);
|
||||
}
|
||||
|
||||
@java.lang.FunctionalInterface public static interface TimeManager.TimeZoneDetectorListener {
|
||||
method public void onChange();
|
||||
}
|
||||
|
||||
public final class TimeZoneCapabilities implements android.os.Parcelable {
|
||||
method public int describeContents();
|
||||
method public int getConfigureAutoDetectionEnabledCapability();
|
||||
method public int getConfigureGeoDetectionEnabledCapability();
|
||||
method public void writeToParcel(@NonNull android.os.Parcel, int);
|
||||
field public static final int CAPABILITY_NOT_ALLOWED = 20; // 0x14
|
||||
field public static final int CAPABILITY_NOT_APPLICABLE = 30; // 0x1e
|
||||
field public static final int CAPABILITY_NOT_SUPPORTED = 10; // 0xa
|
||||
field public static final int CAPABILITY_POSSESSED = 40; // 0x28
|
||||
field @NonNull public static final android.os.Parcelable.Creator<android.app.time.TimeZoneCapabilities> CREATOR;
|
||||
}
|
||||
|
||||
public final class TimeZoneCapabilitiesAndConfig implements android.os.Parcelable {
|
||||
method public int describeContents();
|
||||
method @NonNull public android.app.time.TimeZoneCapabilities getCapabilities();
|
||||
method @NonNull public android.app.time.TimeZoneConfiguration getConfiguration();
|
||||
method public void writeToParcel(@NonNull android.os.Parcel, int);
|
||||
field @NonNull public static final android.os.Parcelable.Creator<android.app.time.TimeZoneCapabilitiesAndConfig> CREATOR;
|
||||
}
|
||||
|
||||
public final class TimeZoneConfiguration implements android.os.Parcelable {
|
||||
method public int describeContents();
|
||||
method public boolean isAutoDetectionEnabled();
|
||||
method public boolean isGeoDetectionEnabled();
|
||||
method public void writeToParcel(@NonNull android.os.Parcel, int);
|
||||
field @NonNull public static final android.os.Parcelable.Creator<android.app.time.TimeZoneConfiguration> CREATOR;
|
||||
}
|
||||
|
||||
public static final class TimeZoneConfiguration.Builder {
|
||||
ctor public TimeZoneConfiguration.Builder();
|
||||
ctor public TimeZoneConfiguration.Builder(@NonNull android.app.time.TimeZoneConfiguration);
|
||||
method @NonNull public android.app.time.TimeZoneConfiguration build();
|
||||
method @NonNull public android.app.time.TimeZoneConfiguration.Builder setAutoDetectionEnabled(boolean);
|
||||
method @NonNull public android.app.time.TimeZoneConfiguration.Builder setGeoDetectionEnabled(boolean);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
package android.app.usage {
|
||||
|
||||
public final class CacheQuotaHint implements android.os.Parcelable {
|
||||
|
||||
Reference in New Issue
Block a user