Merge "Add getNetworkSpecifier() and getCarrierConfig()"
diff --git a/api/system-current.txt b/api/system-current.txt
index 58488d3..79d9588 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -35931,6 +35931,7 @@
field public static final java.lang.String ACTION_BLUETOOTH_SETTINGS = "android.settings.BLUETOOTH_SETTINGS";
field public static final java.lang.String ACTION_CAPTIONING_SETTINGS = "android.settings.CAPTIONING_SETTINGS";
field public static final java.lang.String ACTION_CAST_SETTINGS = "android.settings.CAST_SETTINGS";
+ field public static final java.lang.String ACTION_CONFIGURE_WIFI_SETTINGS = "android.settings.CONFIGURE_WIFI_SETTINGS";
field public static final java.lang.String ACTION_DATA_ROAMING_SETTINGS = "android.settings.DATA_ROAMING_SETTINGS";
field public static final java.lang.String ACTION_DATE_SETTINGS = "android.settings.DATE_SETTINGS";
field public static final java.lang.String ACTION_DEVICE_INFO_SETTINGS = "android.settings.DEVICE_INFO_SETTINGS";
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 2d4a9e9..794e1474 100755
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -376,6 +376,22 @@
"android.settings.WIFI_IP_SETTINGS";
/**
+ * Activity Action: Show settings to allow the configuration of Wi-Fi features.
+ * <p>
+ * In some cases, a matching Activity may not exist, so ensure you
+ * safeguard against this.
+ * <p>
+ * Input: Nothing.
+ * <p>
+ * Output: Nothing.
+ * @hide
+ */
+ @SystemApi
+ @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
+ public static final String ACTION_CONFIGURE_WIFI_SETTINGS =
+ "android.settings.CONFIGURE_WIFI_SETTINGS";
+
+ /**
* Activity Action: Show settings to allow configuration of Wi-Fi saved networks.
* <p>
* In some cases, a matching Activity may not exist, so ensure you
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index c7be74f..b29bf7b 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -3714,12 +3714,19 @@
if (mSafeMode) {
flags |= PackageManager.MATCH_SYSTEM_ONLY;
}
- final String ephemeralPkgName = getEphemeralPackageName(Binder.getCallingUid());
- if (ephemeralPkgName != null) {
+ final int callingUid = Binder.getCallingUid();
+ if (callingUid == Process.SYSTEM_UID || callingUid == 0) {
+ // The system sees all components
+ flags |= PackageManager.MATCH_EPHEMERAL;
+ } else if (getEphemeralPackageName(callingUid) != null) {
+ // But, ephemeral apps see both ephemeral and exposed, non-ephemeral components
flags |= PackageManager.MATCH_VISIBLE_TO_EPHEMERAL_ONLY;
flags |= PackageManager.MATCH_EPHEMERAL;
+ } else {
+ // Otherwise, prevent leaking ephemeral components
+ flags &= ~PackageManager.MATCH_VISIBLE_TO_EPHEMERAL_ONLY;
+ flags &= ~PackageManager.MATCH_EPHEMERAL;
}
-
return updateFlagsForComponent(flags, userId, cookie);
}
@@ -5601,11 +5608,15 @@
// used when either 1) the calling package is normal and the activity is within
// an ephemeral application or 2) the calling package is ephemeral and the
// activity is not visible to ephemeral applications.
+ boolean matchEphemeral =
+ (flags & PackageManager.MATCH_EPHEMERAL) != 0;
+ boolean ephemeralVisibleOnly =
+ (flags & PackageManager.MATCH_VISIBLE_TO_EPHEMERAL_ONLY) != 0;
boolean blockResolution =
- (ephemeralPkgName == null
+ (!matchEphemeral && ephemeralPkgName == null
&& (ai.applicationInfo.privateFlags
& ApplicationInfo.PRIVATE_FLAG_EPHEMERAL) != 0)
- || (ephemeralPkgName != null
+ || (ephemeralVisibleOnly && ephemeralPkgName != null
&& (ai.flags & ActivityInfo.FLAG_VISIBLE_TO_EPHEMERAL) == 0);
if (!blockResolution) {
final ResolveInfo ri = new ResolveInfo();
diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
index df5c214..6a71db0 100644
--- a/telephony/java/android/telephony/CarrierConfigManager.java
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
@@ -972,6 +972,13 @@
public static final int CDMA_ROAMING_MODE_AFFILIATED = 1;
/** @hide */
public static final int CDMA_ROAMING_MODE_ANY = 2;
+ /**
+ * Boolean indicating if support is provided for directly dialing FDN number from FDN list.
+ * If false, this feature is not supported.
+ * @hide
+ */
+ public static final String KEY_SUPPORT_DIRECT_FDN_DIALING_BOOL =
+ "support_direct_fdn_dialing_bool";
/**
* Report IMEI as device id even if it's a CDMA/LTE phone.
@@ -1312,6 +1319,7 @@
sDefaults.putBoolean(KEY_CONFIG_WIFI_DISABLE_IN_ECBM, false);
sDefaults.putBoolean(KEY_CARRIER_NAME_OVERRIDE_BOOL, false);
sDefaults.putString(KEY_CARRIER_NAME_STRING, "");
+ sDefaults.putBoolean(KEY_SUPPORT_DIRECT_FDN_DIALING_BOOL, false);
// MMS defaults
sDefaults.putBoolean(KEY_MMS_ALIAS_ENABLED_BOOL, false);