Merge "Adding helper functions to retrieve settings that are stored per subId." into lmp-mr1-dev

This commit is contained in:
Amit Mahajan
2014-11-25 20:39:06 +00:00
committed by Android (Google) Code Review
2 changed files with 50 additions and 2 deletions

View File

@@ -788,8 +788,9 @@ public class GpsLocationProvider implements LocationProviderInterface {
}
if (info != null) {
boolean dataEnabled = Settings.Global.getInt(mContext.getContentResolver(),
Settings.Global.MOBILE_DATA, 1) == 1;
boolean dataEnabled = TelephonyManager.getIntWithSubId(mContext.getContentResolver(),
Settings.Global.MOBILE_DATA, SubscriptionManager.getDefaultSubId(),
1) == 1;
boolean networkAvailable = info.isAvailable() && dataEnabled;
String defaultApn = getSelectedApn();
if (defaultApn == null) {

View File

@@ -19,8 +19,11 @@ package android.telephony;
import android.annotation.SystemApi;
import android.annotation.SdkConstant;
import android.annotation.SdkConstant.SdkConstantType;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
import android.os.Bundle;
import android.os.RemoteException;
import android.os.ServiceManager;
@@ -3524,4 +3527,48 @@ public class TelephonyManager {
}
return false;
}
/**
* This function retrieves value for setting "name+subId", and if that is not found
* retrieves value for setting "name", and if that is not found uses def as default
*
* @hide */
public static int getIntWithSubId(ContentResolver cr, String name, int subId, int def) {
return Settings.Global.getInt(cr, name + subId, Settings.Global.getInt(cr, name, def));
}
/**
* This function retrieves value for setting "name+subId", and if that is not found
* retrieves value for setting "name", and if that is not found throws
* SettingNotFoundException
*
* @hide */
public static int getIntWithSubId(ContentResolver cr, String name, int subId)
throws SettingNotFoundException {
try {
return Settings.Global.getInt(cr, name + subId);
} catch (SettingNotFoundException e) {
try {
int val = Settings.Global.getInt(cr, name);
/* We are now moving from 'setting' to 'setting+subId', and using the value stored
* for 'setting' as default. Reset the default (since it may have a user set
* value). */
int default_val = val;
if (name.equals(Settings.Global.MOBILE_DATA)) {
default_val = "true".equalsIgnoreCase(
SystemProperties.get("ro.com.android.mobiledata", "true")) ? 1 : 0;
}
if (default_val != val) {
Settings.Global.putInt(cr, name, default_val);
}
return val;
} catch (SettingNotFoundException exc) {
throw new SettingNotFoundException(name);
}
}
}
}