summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jeff Sharkey <jsharkey@android.com> 2017-06-05 17:38:17 -0600
committer Jeff Sharkey <jsharkey@android.com> 2017-06-05 17:38:19 -0600
commitbfc4fcde9f756337fc8d0867ff04549b08688fff (patch)
tree59c1a1cbbfd8483c335409c4c3a820a9a82c2f66
parentd86b8fea43ebb6e5c31691b44d8ceb0d8d3c9072 (diff)
Give Doclava our manifest; more permission docs.
We've seen some @SystemApi methods protected with non-system permissions, so give Doclava the platform AndroidManifest.xml so it can parse the actual permission protection levels to look for APIs that are letting in non-system apps. Also document more @SystemApi permissions. This is purely a docs change; no logic changes are being made. Test: make -j32 update-api Bug: 62263906 Change-Id: Ie0f0a5fb0033817bcc95060f2183a52ae4ae7b06
-rw-r--r--Android.mk1
-rw-r--r--core/java/android/app/admin/DevicePolicyManager.java12
-rw-r--r--core/java/android/hardware/hdmi/HdmiControlManager.java8
-rw-r--r--core/java/android/os/storage/StorageManager.java6
-rw-r--r--location/java/android/location/LocationManager.java2
-rw-r--r--telecomm/java/android/telecom/TelecomManager.java18
-rw-r--r--telephony/java/android/telephony/TelephonyManager.java27
-rw-r--r--wifi/java/android/net/wifi/WifiManager.java4
8 files changed, 74 insertions, 4 deletions
diff --git a/Android.mk b/Android.mk
index b5f8cb016270..3f2ae83294a0 100644
--- a/Android.mk
+++ b/Android.mk
@@ -923,6 +923,7 @@ framework_docs_LOCAL_DROIDDOC_OPTIONS := \
-android \
-knowntags ./frameworks/base/docs/knowntags.txt \
-knowntags ./libcore/known_oj_tags.txt \
+ -manifest ./frameworks/base/core/res/AndroidManifest.xml \
-hidePackage com.android.org.conscrypt \
-since $(SRC_API_DIR)/1.xml 1 \
-since $(SRC_API_DIR)/2.xml 2 \
diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java
index b6c6f5b0c035..01c46569d1e2 100644
--- a/core/java/android/app/admin/DevicePolicyManager.java
+++ b/core/java/android/app/admin/DevicePolicyManager.java
@@ -1605,6 +1605,7 @@ public class DevicePolicyManager {
* @hide
*/
@SystemApi
+ @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL)
public boolean packageHasActiveAdmins(String packageName) {
return packageHasActiveAdmins(packageName, myUserId());
}
@@ -4516,11 +4517,10 @@ public class DevicePolicyManager {
/**
* @return device owner component name, even if it's running on a different user.
*
- * <p>Requires the MANAGE_USERS permission.
- *
* @hide
*/
@SystemApi
+ @RequiresPermission(android.Manifest.permission.MANAGE_USERS)
public ComponentName getDeviceOwnerComponentOnAnyUser() {
return getDeviceOwnerComponentInner(/* callingUserOnly =*/ false);
}
@@ -4604,6 +4604,7 @@ public class DevicePolicyManager {
* @hide
*/
@SystemApi
+ @RequiresPermission(android.Manifest.permission.MANAGE_USERS)
public @Nullable String getDeviceOwner() {
throwIfParentInstance("getDeviceOwner");
final ComponentName name = getDeviceOwnerComponentOnCallingUser();
@@ -4621,6 +4622,7 @@ public class DevicePolicyManager {
*/
@SystemApi
@TestApi
+ @SuppressLint("Doclava125")
public boolean isDeviceManaged() {
try {
return mService.hasDeviceOwner();
@@ -4633,11 +4635,10 @@ public class DevicePolicyManager {
* Returns the device owner name. Note this method *will* return the device owner
* name when it's running on a different user.
*
- * <p>Requires the MANAGE_USERS permission.
- *
* @hide
*/
@SystemApi
+ @RequiresPermission(android.Manifest.permission.MANAGE_USERS)
public String getDeviceOwnerNameOnAnyUser() {
throwIfParentInstance("getDeviceOwnerNameOnAnyUser");
if (mService != null) {
@@ -5010,6 +5011,7 @@ public class DevicePolicyManager {
* @throws IllegalArgumentException if the userId is invalid.
*/
@SystemApi
+ @RequiresPermission(android.Manifest.permission.MANAGE_USERS)
public @Nullable String getProfileOwnerNameAsUser(int userId) throws IllegalArgumentException {
throwIfParentInstance("getProfileOwnerNameAsUser");
if (mService != null) {
@@ -7528,6 +7530,7 @@ public class DevicePolicyManager {
*/
@SystemApi
@TestApi
+ @SuppressLint("Doclava125")
public @Nullable CharSequence getDeviceOwnerOrganizationName() {
try {
return mService.getDeviceOwnerOrganizationName();
@@ -7739,6 +7742,7 @@ public class DevicePolicyManager {
* @hide
*/
@SystemApi
+ @RequiresPermission(android.Manifest.permission.MANAGE_USERS)
public boolean isDeviceProvisioningConfigApplied() {
try {
return mService.isDeviceProvisioningConfigApplied();
diff --git a/core/java/android/hardware/hdmi/HdmiControlManager.java b/core/java/android/hardware/hdmi/HdmiControlManager.java
index 1371351cc8ff..a772cbe43196 100644
--- a/core/java/android/hardware/hdmi/HdmiControlManager.java
+++ b/core/java/android/hardware/hdmi/HdmiControlManager.java
@@ -17,8 +17,10 @@
package android.hardware.hdmi;
import android.annotation.Nullable;
+import android.annotation.RequiresPermission;
import android.annotation.SdkConstant;
import android.annotation.SdkConstant.SdkConstantType;
+import android.annotation.SuppressLint;
import android.content.Context;
import android.annotation.SystemApi;
import android.annotation.SystemService;
@@ -298,6 +300,7 @@ public final class HdmiControlManager {
* See {@link HdmiDeviceInfo#DEVICE_TV}
*/
@Nullable
+ @SuppressLint("Doclava125")
public HdmiClient getClient(int type) {
if (mService == null) {
return null;
@@ -322,6 +325,7 @@ public final class HdmiControlManager {
* @return {@link HdmiPlaybackClient} instance. {@code null} on failure.
*/
@Nullable
+ @SuppressLint("Doclava125")
public HdmiPlaybackClient getPlaybackClient() {
return (HdmiPlaybackClient) getClient(HdmiDeviceInfo.DEVICE_PLAYBACK);
}
@@ -336,6 +340,7 @@ public final class HdmiControlManager {
* @return {@link HdmiTvClient} instance. {@code null} on failure.
*/
@Nullable
+ @SuppressLint("Doclava125")
public HdmiTvClient getTvClient() {
return (HdmiTvClient) getClient(HdmiDeviceInfo.DEVICE_TV);
}
@@ -346,6 +351,7 @@ public final class HdmiControlManager {
*
* @param isStandbyModeOn target status of the system's standby mode
*/
+ @RequiresPermission(android.Manifest.permission.HDMI_CEC)
public void setStandbyMode(boolean isStandbyModeOn) {
try {
mService.setStandbyMode(isStandbyModeOn);
@@ -406,6 +412,7 @@ public final class HdmiControlManager {
* @param listener {@link HotplugEventListener} instance
* @see HdmiControlManager#removeHotplugEventListener(HotplugEventListener)
*/
+ @RequiresPermission(android.Manifest.permission.HDMI_CEC)
public void addHotplugEventListener(HotplugEventListener listener) {
if (mService == null) {
Log.e(TAG, "HdmiControlService is not available");
@@ -429,6 +436,7 @@ public final class HdmiControlManager {
*
* @param listener {@link HotplugEventListener} instance to be removed
*/
+ @RequiresPermission(android.Manifest.permission.HDMI_CEC)
public void removeHotplugEventListener(HotplugEventListener listener) {
if (mService == null) {
Log.e(TAG, "HdmiControlService is not available");
diff --git a/core/java/android/os/storage/StorageManager.java b/core/java/android/os/storage/StorageManager.java
index d13ccf71d8f0..a6cdb03c8b67 100644
--- a/core/java/android/os/storage/StorageManager.java
+++ b/core/java/android/os/storage/StorageManager.java
@@ -25,6 +25,7 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.SdkConstant;
+import android.annotation.SuppressLint;
import android.annotation.SystemApi;
import android.annotation.SystemService;
import android.annotation.WorkerThread;
@@ -1699,6 +1700,7 @@ public class StorageManager {
/** @hide */
@SystemApi
+ @SuppressLint("Doclava125")
public long getAllocatableBytes(@NonNull UUID storageUuid,
@RequiresPermission @AllocateFlags int flags) throws IOException {
try {
@@ -1713,6 +1715,7 @@ public class StorageManager {
/** @removed */
@Deprecated
+ @SuppressLint("Doclava125")
public long getAllocatableBytes(@NonNull File path,
@RequiresPermission @AllocateFlags int flags) throws IOException {
return getAllocatableBytes(getUuidForPath(path), flags);
@@ -1747,6 +1750,7 @@ public class StorageManager {
/** @hide */
@SystemApi
+ @SuppressLint("Doclava125")
public void allocateBytes(@NonNull UUID storageUuid, @BytesLong long bytes,
@RequiresPermission @AllocateFlags int flags) throws IOException {
try {
@@ -1760,6 +1764,7 @@ public class StorageManager {
/** @removed */
@Deprecated
+ @SuppressLint("Doclava125")
public void allocateBytes(@NonNull File path, @BytesLong long bytes,
@RequiresPermission @AllocateFlags int flags) throws IOException {
allocateBytes(getUuidForPath(path), bytes, flags);
@@ -1796,6 +1801,7 @@ public class StorageManager {
/** @hide */
@SystemApi
+ @SuppressLint("Doclava125")
public void allocateBytes(FileDescriptor fd, @BytesLong long bytes,
@RequiresPermission @AllocateFlags int flags) throws IOException {
final File file = ParcelFileDescriptor.getFile(fd);
diff --git a/location/java/android/location/LocationManager.java b/location/java/android/location/LocationManager.java
index 4ab8543b7f6a..26ac2a23d8c5 100644
--- a/location/java/android/location/LocationManager.java
+++ b/location/java/android/location/LocationManager.java
@@ -828,6 +828,7 @@ public class LocationManager {
* @hide
*/
@SystemApi
+ @RequiresPermission(anyOf = {ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION})
public void requestLocationUpdates(LocationRequest request, LocationListener listener,
Looper looper) {
checkListener(listener);
@@ -856,6 +857,7 @@ public class LocationManager {
* @hide
*/
@SystemApi
+ @RequiresPermission(anyOf = {ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION})
public void requestLocationUpdates(LocationRequest request, PendingIntent intent) {
checkPendingIntent(intent);
requestLocationUpdates(request, null, null, intent);
diff --git a/telecomm/java/android/telecom/TelecomManager.java b/telecomm/java/android/telecom/TelecomManager.java
index 55de7ab7eb1e..d0b36c93db2f 100644
--- a/telecomm/java/android/telecom/TelecomManager.java
+++ b/telecomm/java/android/telecom/TelecomManager.java
@@ -17,6 +17,7 @@ package android.telecom;
import android.Manifest;
import android.annotation.RequiresPermission;
import android.annotation.SuppressAutoDoc;
+import android.annotation.SuppressLint;
import android.annotation.SystemApi;
import android.annotation.SystemService;
import android.content.ComponentName;
@@ -736,6 +737,10 @@ public class TelecomManager {
* @hide
*/
@SystemApi
+ @RequiresPermission(anyOf = {
+ android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE,
+ android.Manifest.permission.READ_PHONE_STATE
+ })
public List<PhoneAccountHandle> getPhoneAccountsSupportingScheme(String uriScheme) {
try {
if (isServiceConnected()) {
@@ -817,6 +822,7 @@ public class TelecomManager {
* @hide
*/
@SystemApi
+ @SuppressLint("Doclava125")
public List<PhoneAccountHandle> getPhoneAccountsForPackage() {
try {
if (isServiceConnected()) {
@@ -944,6 +950,7 @@ public class TelecomManager {
* @hide
*/
@SystemApi
+ @SuppressLint("Doclava125")
public void clearPhoneAccounts() {
clearAccounts();
}
@@ -953,6 +960,7 @@ public class TelecomManager {
* @hide
*/
@SystemApi
+ @SuppressLint("Doclava125")
public void clearAccounts() {
try {
if (isServiceConnected()) {
@@ -984,6 +992,7 @@ public class TelecomManager {
* @hide
*/
@SystemApi
+ @SuppressLint("Doclava125")
public ComponentName getDefaultPhoneApp() {
try {
if (isServiceConnected()) {
@@ -1200,6 +1209,10 @@ public class TelecomManager {
* @hide
*/
@SystemApi
+ @RequiresPermission(anyOf = {
+ android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE,
+ android.Manifest.permission.READ_PHONE_STATE
+ })
public boolean isRinging() {
try {
if (isServiceConnected()) {
@@ -1298,6 +1311,10 @@ public class TelecomManager {
* @hide
*/
@SystemApi
+ @RequiresPermission(anyOf = {
+ android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE,
+ android.Manifest.permission.READ_PHONE_STATE
+ })
public boolean isTtySupported() {
try {
if (isServiceConnected()) {
@@ -1576,6 +1593,7 @@ public class TelecomManager {
* @hide
*/
@SystemApi
+ @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
public void enablePhoneAccount(PhoneAccountHandle handle, boolean isEnabled) {
ITelecomService service = getTelecomService();
if (service != null) {
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index e3555627a486..6b921c759107 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -2684,6 +2684,7 @@ public class TelephonyManager {
*/
@SystemApi
@RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+ @SuppressLint("Doclava125")
public boolean isVisualVoicemailEnabled(PhoneAccountHandle phoneAccountHandle){
return false;
}
@@ -2702,6 +2703,7 @@ public class TelephonyManager {
* @hide
*/
@SystemApi
+ @SuppressLint("Doclava125")
@Nullable
public Bundle getVisualVoicemailSettings(){
try {
@@ -4899,6 +4901,7 @@ public class TelephonyManager {
/** @hide */
@SystemApi
+ @SuppressLint("Doclava125")
public int checkCarrierPrivilegesForPackage(String pkgName) {
try {
ITelephony telephony = getITelephony();
@@ -4914,6 +4917,7 @@ public class TelephonyManager {
/** @hide */
@SystemApi
+ @SuppressLint("Doclava125")
public int checkCarrierPrivilegesForPackageAnyPhone(String pkgName) {
try {
ITelephony telephony = getITelephony();
@@ -4965,6 +4969,7 @@ public class TelephonyManager {
/** @hide */
@SystemApi
+ @SuppressLint("Doclava125")
public void dial(String number) {
try {
ITelephony telephony = getITelephony();
@@ -5017,6 +5022,7 @@ public class TelephonyManager {
/** @hide */
@SystemApi
+ @SuppressLint("Doclava125")
public void silenceRinger() {
try {
getTelecomService().silenceRinger(getOpPackageName());
@@ -5027,6 +5033,10 @@ public class TelephonyManager {
/** @hide */
@SystemApi
+ @RequiresPermission(anyOf = {
+ android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE,
+ android.Manifest.permission.READ_PHONE_STATE
+ })
public boolean isOffhook() {
try {
ITelephony telephony = getITelephony();
@@ -5040,6 +5050,10 @@ public class TelephonyManager {
/** @hide */
@SystemApi
+ @RequiresPermission(anyOf = {
+ android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE,
+ android.Manifest.permission.READ_PHONE_STATE
+ })
public boolean isRinging() {
try {
ITelephony telephony = getITelephony();
@@ -5053,6 +5067,10 @@ public class TelephonyManager {
/** @hide */
@SystemApi
+ @RequiresPermission(anyOf = {
+ android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE,
+ android.Manifest.permission.READ_PHONE_STATE
+ })
public boolean isIdle() {
try {
ITelephony telephony = getITelephony();
@@ -5066,6 +5084,10 @@ public class TelephonyManager {
/** @hide */
@SystemApi
+ @RequiresPermission(anyOf = {
+ android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE,
+ android.Manifest.permission.READ_PHONE_STATE
+ })
public boolean isRadioOn() {
try {
ITelephony telephony = getITelephony();
@@ -5310,6 +5332,7 @@ public class TelephonyManager {
/** @hide */
@SystemApi
+ @SuppressLint("Doclava125")
public void updateServiceLocation() {
try {
ITelephony telephony = getITelephony();
@@ -5497,6 +5520,10 @@ public class TelephonyManager {
/** @hide */
@SystemApi
+ @RequiresPermission(anyOf = {
+ android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE,
+ android.Manifest.permission.READ_PHONE_STATE
+ })
public boolean isVideoCallingEnabled() {
try {
ITelephony telephony = getITelephony();
diff --git a/wifi/java/android/net/wifi/WifiManager.java b/wifi/java/android/net/wifi/WifiManager.java
index 05312a979614..c89a9a458393 100644
--- a/wifi/java/android/net/wifi/WifiManager.java
+++ b/wifi/java/android/net/wifi/WifiManager.java
@@ -2066,6 +2066,7 @@ public class WifiManager {
* @hide
*/
@SystemApi
+ @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE)
public int getWifiApState() {
try {
return mService.getWifiApEnabledState();
@@ -2082,6 +2083,7 @@ public class WifiManager {
* @hide
*/
@SystemApi
+ @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE)
public boolean isWifiApEnabled() {
return getWifiApState() == WIFI_AP_STATE_ENABLED;
}
@@ -2093,6 +2095,7 @@ public class WifiManager {
* @hide
*/
@SystemApi
+ @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE)
public WifiConfiguration getWifiApConfiguration() {
try {
return mService.getWifiApConfiguration();
@@ -2108,6 +2111,7 @@ public class WifiManager {
* @hide
*/
@SystemApi
+ @RequiresPermission(android.Manifest.permission.CHANGE_WIFI_STATE)
public boolean setWifiApConfiguration(WifiConfiguration wifiConfig) {
try {
mService.setWifiApConfiguration(wifiConfig);