Fix entitlement failed when device is on CBRS
When active cellular internet is switched to CBRS in DSDS case, default data sub id may not be changed. Fix by using active subscription id and pass this sub id to entitlement app. Bug: 134994718 Test: atest TetherServiceTest Test: manual test with carrer SIMs. Change-Id: I30a1d70c0690f0dba8f4171a2bde884f9b7ccfc4
This commit is contained in:
@@ -55,7 +55,7 @@ public class TetherProvisioningActivity extends Activity {
|
|||||||
|
|
||||||
final int tetherSubId = getIntent().getIntExtra(EXTRA_SUBID,
|
final int tetherSubId = getIntent().getIntExtra(EXTRA_SUBID,
|
||||||
SubscriptionManager.INVALID_SUBSCRIPTION_ID);
|
SubscriptionManager.INVALID_SUBSCRIPTION_ID);
|
||||||
final int subId = SubscriptionManager.getDefaultDataSubscriptionId();
|
final int subId = SubscriptionManager.getActiveDataSubscriptionId();
|
||||||
if (tetherSubId != subId) {
|
if (tetherSubId != subId) {
|
||||||
Log.e(TAG, "This Provisioning request is outdated, current subId: " + subId);
|
Log.e(TAG, "This Provisioning request is outdated, current subId: " + subId);
|
||||||
return;
|
return;
|
||||||
@@ -67,6 +67,7 @@ public class TetherProvisioningActivity extends Activity {
|
|||||||
final Intent intent = new Intent(Intent.ACTION_MAIN);
|
final Intent intent = new Intent(Intent.ACTION_MAIN);
|
||||||
intent.setClassName(provisionApp[0], provisionApp[1]);
|
intent.setClassName(provisionApp[0], provisionApp[1]);
|
||||||
intent.putExtra(EXTRA_TETHER_TYPE, tetherType);
|
intent.putExtra(EXTRA_TETHER_TYPE, tetherType);
|
||||||
|
intent.putExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, subId);
|
||||||
if (DEBUG) {
|
if (DEBUG) {
|
||||||
Log.d(TAG, "Starting provisioning app: " + provisionApp[0] + "." + provisionApp[1]);
|
Log.d(TAG, "Starting provisioning app: " + provisionApp[0] + "." + provisionApp[1]);
|
||||||
}
|
}
|
||||||
|
@@ -85,7 +85,7 @@ public class TetherService extends Service {
|
|||||||
public void onCreate() {
|
public void onCreate() {
|
||||||
super.onCreate();
|
super.onCreate();
|
||||||
if (DEBUG) Log.d(TAG, "Creating TetherService");
|
if (DEBUG) Log.d(TAG, "Creating TetherService");
|
||||||
String provisionResponse = getResourceForDefaultDataSubId().getString(
|
String provisionResponse = getResourceForActiveDataSubId().getString(
|
||||||
com.android.internal.R.string.config_mobile_hotspot_provision_response);
|
com.android.internal.R.string.config_mobile_hotspot_provision_response);
|
||||||
registerReceiver(mReceiver, new IntentFilter(provisionResponse),
|
registerReceiver(mReceiver, new IntentFilter(provisionResponse),
|
||||||
android.Manifest.permission.CONNECTIVITY_INTERNAL, null);
|
android.Manifest.permission.CONNECTIVITY_INTERNAL, null);
|
||||||
@@ -105,7 +105,7 @@ public class TetherService extends Service {
|
|||||||
if (intent.hasExtra(EXTRA_SUBID)) {
|
if (intent.hasExtra(EXTRA_SUBID)) {
|
||||||
final int tetherSubId = intent.getIntExtra(EXTRA_SUBID,
|
final int tetherSubId = intent.getIntExtra(EXTRA_SUBID,
|
||||||
SubscriptionManager.INVALID_SUBSCRIPTION_ID);
|
SubscriptionManager.INVALID_SUBSCRIPTION_ID);
|
||||||
final int subId = getTetherServiceWrapper().getDefaultDataSubscriptionId();
|
final int subId = getTetherServiceWrapper().getActiveDataSubscriptionId();
|
||||||
if (tetherSubId != subId) {
|
if (tetherSubId != subId) {
|
||||||
Log.e(TAG, "This Provisioning request is outdated, current subId: " + subId);
|
Log.e(TAG, "This Provisioning request is outdated, current subId: " + subId);
|
||||||
if (!mInProvisionCheck) {
|
if (!mInProvisionCheck) {
|
||||||
@@ -273,11 +273,13 @@ public class TetherService extends Service {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Intent getProvisionBroadcastIntent(int index) {
|
private Intent getProvisionBroadcastIntent(int index) {
|
||||||
String provisionAction = getResourceForDefaultDataSubId().getString(
|
String provisionAction = getResourceForActiveDataSubId().getString(
|
||||||
com.android.internal.R.string.config_mobile_hotspot_provision_app_no_ui);
|
com.android.internal.R.string.config_mobile_hotspot_provision_app_no_ui);
|
||||||
|
final int subId = getTetherServiceWrapper().getActiveDataSubscriptionId();
|
||||||
Intent intent = new Intent(provisionAction);
|
Intent intent = new Intent(provisionAction);
|
||||||
int type = mCurrentTethers.get(index);
|
int type = mCurrentTethers.get(index);
|
||||||
intent.putExtra(TETHER_CHOICE, type);
|
intent.putExtra(TETHER_CHOICE, type);
|
||||||
|
intent.putExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, subId);
|
||||||
intent.setFlags(Intent.FLAG_RECEIVER_FOREGROUND
|
intent.setFlags(Intent.FLAG_RECEIVER_FOREGROUND
|
||||||
| Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND);
|
| Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND);
|
||||||
|
|
||||||
@@ -309,7 +311,7 @@ public class TetherService extends Service {
|
|||||||
|
|
||||||
PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, 0);
|
PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, 0);
|
||||||
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
|
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
|
||||||
int period = getResourceForDefaultDataSubId().getInteger(
|
int period = getResourceForActiveDataSubId().getInteger(
|
||||||
com.android.internal.R.integer.config_mobile_hotspot_provision_check_period);
|
com.android.internal.R.integer.config_mobile_hotspot_provision_check_period);
|
||||||
long periodMs = period * MS_PER_HOUR;
|
long periodMs = period * MS_PER_HOUR;
|
||||||
long firstTime = SystemClock.elapsedRealtime() + periodMs;
|
long firstTime = SystemClock.elapsedRealtime() + periodMs;
|
||||||
@@ -362,7 +364,7 @@ public class TetherService extends Service {
|
|||||||
@Override
|
@Override
|
||||||
public void onReceive(Context context, Intent intent) {
|
public void onReceive(Context context, Intent intent) {
|
||||||
if (DEBUG) Log.d(TAG, "Got provision result " + intent);
|
if (DEBUG) Log.d(TAG, "Got provision result " + intent);
|
||||||
String provisionResponse = getResourceForDefaultDataSubId().getString(
|
String provisionResponse = getResourceForActiveDataSubId().getString(
|
||||||
com.android.internal.R.string.config_mobile_hotspot_provision_response);
|
com.android.internal.R.string.config_mobile_hotspot_provision_response);
|
||||||
|
|
||||||
if (provisionResponse.equals(intent.getAction())) {
|
if (provisionResponse.equals(intent.getAction())) {
|
||||||
@@ -429,14 +431,14 @@ public class TetherService extends Service {
|
|||||||
mUsageStatsManager.setAppInactive(packageName, isInactive);
|
mUsageStatsManager.setAppInactive(packageName, isInactive);
|
||||||
}
|
}
|
||||||
|
|
||||||
int getDefaultDataSubscriptionId() {
|
int getActiveDataSubscriptionId() {
|
||||||
return SubscriptionManager.getDefaultDataSubscriptionId();
|
return SubscriptionManager.getActiveDataSubscriptionId();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
Resources getResourceForDefaultDataSubId() {
|
Resources getResourceForActiveDataSubId() {
|
||||||
final int subId = getTetherServiceWrapper().getDefaultDataSubscriptionId();
|
final int subId = getTetherServiceWrapper().getActiveDataSubscriptionId();
|
||||||
return Utils.getResourcesForSubId(this, subId);
|
return Utils.getResourcesForSubId(this, subId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -458,7 +458,7 @@ public class TetherServiceTest extends ServiceTestCase<TetherService> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
int getDefaultDataSubscriptionId() {
|
int getActiveDataSubscriptionId() {
|
||||||
return INVALID_SUBSCRIPTION_ID;
|
return INVALID_SUBSCRIPTION_ID;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user