Handle provisioning APN by turning off/on data.
This is a start and two tests succeed:
Tested expired AT&T SIM and waiting 15min for alarm to fire.
Tested a provisioned Verizon SIM and works normally.
I've NOT tested AT&T where I've properly completed the provisioning.
I've NOT tested T-Mobile SIM either provisioned or not-provisioned.
I've NOT tested provisioning over WiFi.
I've NOT tested that WiFi <-> Mobile works
I've NOT tested voice calls, SMS, MMS
...
The current bug is below, but it is poorly named either it should be
renamed or a new bug created.
Bug: 13190133
Change-Id: I0a09f642614cd27a8655e9dae764b8999ce485b8
diff --git a/src/java/com/android/internal/telephony/dataconnection/DcTrackerBase.java b/src/java/com/android/internal/telephony/dataconnection/DcTrackerBase.java
index a8050a6..40eba11 100644
--- a/src/java/com/android/internal/telephony/dataconnection/DcTrackerBase.java
+++ b/src/java/com/android/internal/telephony/dataconnection/DcTrackerBase.java
@@ -849,10 +849,6 @@
break;
}
case DctConstants.CMD_ENABLE_MOBILE_PROVISIONING: {
- // TODO: Right now we know when it ends "successfully" when
- // provisioning apn gets dropped, what happens if the user never
- // succeed, I assume there is a timeout and the network will drop
- // it after a period of time.
Bundle bundle = msg.getData();
if (bundle != null) {
try {
@@ -867,18 +863,11 @@
mIsProvisioning = false;
mProvisioningUrl = null;
} else {
- ApnContext apnContext = mApnContexts.get(PhoneConstants.APN_TYPE_DEFAULT);
- if (apnContext.isProvisioningApn() && apnContext.getState() == State.CONNECTED){
- log("CMD_ENABLE_MOBILE_PROVISIONING: mIsProvisioning=true url="
- + mProvisioningUrl);
- mIsProvisioning = true;
- startProvisioningApnAlarm();
- completeConnection(mApnContexts.get(PhoneConstants.APN_TYPE_DEFAULT));
- } else {
- log("CMD_ENABLE_MOBILE_PROVISIONING: No longer connected");
- mIsProvisioning = false;
- mProvisioningUrl = null;
- }
+ loge("CMD_ENABLE_MOBILE_PROVISIONING: provisioningUrl=" + mProvisioningUrl);
+ mIsProvisioning = true;
+ startProvisioningApnAlarm();
+ onSetInternalDataEnabled(true);
+ enableApnType("default");
}
break;
}