Merge "Tethering: add isTetheringSupported with callerPkg parameter"

This commit is contained in:
Mark Chien
2020-03-03 11:54:58 +00:00
committed by Gerrit Code Review
2 changed files with 20 additions and 0 deletions

View File

@@ -47,6 +47,7 @@ package android.net {
method @NonNull public String[] getTetheredIfaces();
method @NonNull public String[] getTetheringErroredIfaces();
method public boolean isTetheringSupported();
method public boolean isTetheringSupported(@NonNull String);
method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public void registerTetheringEventCallback(@NonNull java.util.concurrent.Executor, @NonNull android.net.TetheringManager.TetheringEventCallback);
method @RequiresPermission(anyOf={"android.permission.TETHER_PRIVILEGED", android.Manifest.permission.WRITE_SETTINGS}) public void requestLatestTetheringEntitlementResult(int, boolean, @NonNull java.util.concurrent.Executor, @NonNull android.net.TetheringManager.OnTetheringEntitlementResultListener);
method public void requestLatestTetheringEntitlementResult(int, @NonNull android.os.ResultReceiver, boolean);

View File

@@ -1131,6 +1131,25 @@ public class TetheringManager {
public boolean isTetheringSupported() {
final String callerPkg = mContext.getOpPackageName();
return isTetheringSupported(callerPkg);
}
/**
* Check if the device allows for tethering. It may be disabled via {@code ro.tether.denied}
* system property, Settings.TETHER_SUPPORTED or due to device configuration. This is useful
* for system components that query this API on behalf of an app. In particular, Bluetooth
* has @UnsupportedAppUsage calls that will let apps turn on bluetooth tethering if they have
* the right permissions, but such an app needs to know whether it can (permissions as well
* as support from the device) turn on tethering in the first place to show the appropriate UI.
*
* @param callerPkg The caller package name, if it is not matching the calling uid,
* SecurityException would be thrown.
* @return a boolean - {@code true} indicating Tethering is supported.
* @hide
*/
@SystemApi(client = MODULE_LIBRARIES)
public boolean isTetheringSupported(@NonNull final String callerPkg) {
final RequestDispatcher dispatcher = new RequestDispatcher();
final int ret = dispatcher.waitForResult((connector, listener) -> {
try {