diff options
| -rwxr-xr-x | api/system-current.txt | 9 | ||||
| -rw-r--r-- | core/java/android/debug/AdbManager.java | 37 | ||||
| -rw-r--r-- | core/java/android/debug/IAdbManager.aidl | 11 | ||||
| -rw-r--r-- | services/core/java/com/android/server/adb/AdbService.java | 25 |
4 files changed, 79 insertions, 3 deletions
diff --git a/api/system-current.txt b/api/system-current.txt index 89a54d969341..7a4aba8302bc 100755 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -2092,6 +2092,15 @@ package android.content.rollback { } +package android.debug { + + public class AdbManager { + method @RequiresPermission(android.Manifest.permission.MANAGE_DEBUGGING) public boolean isAdbWifiQrSupported(); + method @RequiresPermission(android.Manifest.permission.MANAGE_DEBUGGING) public boolean isAdbWifiSupported(); + } + +} + package android.hardware { public final class Sensor { diff --git a/core/java/android/debug/AdbManager.java b/core/java/android/debug/AdbManager.java index ae3d79490c98..0a76bedcd66e 100644 --- a/core/java/android/debug/AdbManager.java +++ b/core/java/android/debug/AdbManager.java @@ -16,15 +16,17 @@ package android.debug; +import android.annotation.RequiresPermission; +import android.annotation.SystemApi; import android.annotation.SystemService; import android.content.Context; +import android.os.RemoteException; /** - * This class allows the control of ADB-related functions. Currently only ADB over USB is - * supported, and none of the API is public. - * + * This class allows the control of ADB-related functions. * @hide */ +@SystemApi @SystemService(Context.ADB_SERVICE) public class AdbManager { private static final String TAG = "AdbManager"; @@ -39,4 +41,33 @@ public class AdbManager { mContext = context; mService = service; } + + /** + * @return true if the device supports secure ADB over Wi-Fi. + * @hide + */ + @SystemApi + @RequiresPermission(android.Manifest.permission.MANAGE_DEBUGGING) + public boolean isAdbWifiSupported() { + try { + return mService.isAdbWifiSupported(); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + + /** + * @return true if the device supports secure ADB over Wi-Fi and device pairing by + * QR code. + * @hide + */ + @SystemApi + @RequiresPermission(android.Manifest.permission.MANAGE_DEBUGGING) + public boolean isAdbWifiQrSupported() { + try { + return mService.isAdbWifiQrSupported(); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } } diff --git a/core/java/android/debug/IAdbManager.aidl b/core/java/android/debug/IAdbManager.aidl index 79e0794fd9af..c48fc07791c0 100644 --- a/core/java/android/debug/IAdbManager.aidl +++ b/core/java/android/debug/IAdbManager.aidl @@ -41,4 +41,15 @@ interface IAdbManager { * Clear all public keys installed for secure ADB debugging. */ void clearDebuggingKeys(); + + /** + * Returns true if device supports secure Adb over Wi-Fi. + */ + boolean isAdbWifiSupported(); + + /** + * Returns true if device supports secure Adb over Wi-Fi and device pairing by + * QR code. + */ + boolean isAdbWifiQrSupported(); } diff --git a/services/core/java/com/android/server/adb/AdbService.java b/services/core/java/com/android/server/adb/AdbService.java index 7fd98e0043c9..c125b1baf860 100644 --- a/services/core/java/com/android/server/adb/AdbService.java +++ b/services/core/java/com/android/server/adb/AdbService.java @@ -17,6 +17,7 @@ package com.android.server.adb; import android.content.ContentResolver; import android.content.Context; +import android.content.pm.PackageManager; import android.database.ContentObserver; import android.debug.AdbManagerInternal; import android.debug.IAdbManager; @@ -260,6 +261,30 @@ public class AdbService extends IAdbManager.Stub { } } + /** + * @return true if the device supports secure ADB over Wi-Fi. + * @hide + */ + @Override + public boolean isAdbWifiSupported() { + mContext.enforceCallingPermission( + android.Manifest.permission.MANAGE_DEBUGGING, "AdbService"); + return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_WIFI); + } + + /** + * @return true if the device supports secure ADB over Wi-Fi and device pairing by + * QR code. + * @hide + */ + @Override + public boolean isAdbWifiQrSupported() { + mContext.enforceCallingPermission( + android.Manifest.permission.MANAGE_DEBUGGING, "AdbService"); + return isAdbWifiSupported() && mContext.getPackageManager().hasSystemFeature( + PackageManager.FEATURE_CAMERA_ANY); + } + private void setAdbEnabled(boolean enable) { if (DEBUG) Slog.d(TAG, "setAdbEnabled(" + enable + "), mAdbEnabled=" + mAdbEnabled); |