Implement ui-based provisioning for the new tether api.
This is dependent on ag/850648 and the Settings changes under the
uiprovisioning topic id.
BUG: 26247383
Change-Id: Ib151d56a1ece5ca3a55219abed965286eac5dd60
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 80cf4bb..a9fd3c8 100755
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -129,6 +129,27 @@
"android.settings.WIRELESS_SETTINGS";
/**
+ * Activity Action: Show tether provisioning activity.
+ *
+ * <p>
+ * In some cases, a matching Activity may not exist, so ensure you
+ * safeguard against this.
+ * <p>
+ * Input: {@link ConnectivityManager.EXTRA_TETHER_TYPE} should be included to specify which type
+ * of tethering should be checked. {@link ConnectivityManager.EXTRA_PROVISION_CALLBACK} should
+ * contain a {@link ResultReceiver} which will be called back with a tether result code.
+ * <p>
+ * Output: The result of the provisioning check.
+ * {@link ConnectivityManager.TETHER_ERROR_NO_ERROR} if successful,
+ * {@link ConnectivityManager.TETHER_ERROR_PROVISION_FAILED} for failure.
+ *
+ * @hide
+ */
+ @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
+ public static final String ACTION_TETHER_PROVISIONING =
+ "android.settings.TETHER_PROVISIONING_UI";
+
+ /**
* Activity Action: Show settings to allow entering/exiting airplane mode.
* <p>
* In some cases, a matching Activity may not exist, so ensure you
diff --git a/services/core/java/com/android/server/connectivity/Tethering.java b/services/core/java/com/android/server/connectivity/Tethering.java
index 1d7e835..6648efd 100644
--- a/services/core/java/com/android/server/connectivity/Tethering.java
+++ b/services/core/java/com/android/server/connectivity/Tethering.java
@@ -52,6 +52,7 @@
import android.os.ResultReceiver;
import android.os.SystemProperties;
import android.os.UserHandle;
+import android.provider.Settings;
import android.telephony.CarrierConfigManager;
import android.telephony.TelephonyManager;
import android.util.Log;
@@ -464,8 +465,20 @@
}
private void runUiTetherProvisioningAndEnable(int type, ResultReceiver receiver) {
- // TODO: Fill in for real.
- enableTetheringInternal(type, true, receiver);
+ ResultReceiver proxyReceiver = getProxyReceiver(type, receiver);
+ sendUiTetherProvisionIntent(type, proxyReceiver);
+ }
+
+ private void sendUiTetherProvisionIntent(int type, ResultReceiver receiver) {
+ Intent intent = new Intent(Settings.ACTION_TETHER_PROVISIONING);
+ intent.putExtra(ConnectivityManager.EXTRA_ADD_TETHER_TYPE, type);
+ intent.putExtra(ConnectivityManager.EXTRA_PROVISION_CALLBACK, receiver);
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ mContext.startActivityAsUser(intent, UserHandle.CURRENT);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
}
/**