summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorDavid Su <dysu@google.com>2020-07-08 16:33:27 -0700
committerDavid Su <dysu@google.com>2020-07-10 22:56:13 +0000
commit000ad45722c73f345de77ff43973b2ed811b90e1 (patch)
tree621e976e278c1d50b0b36187146c0ddeb51a4942 /service
parent2022b51e1bf7fb88a409998b2bd31eaabe227e03 (diff)
Fix EapFailureNotifier failing to resolve resource name dynamically
Resources#getIdentifier uses the Java package name rather than the Android APK's package name i.e. the package name generated for R.java at compile time. Bug: 160569695 Test: manually verified notification is displayed Test: atest FrameworksWifiTests Change-Id: I4c9a17c86e23956478a927021fb1b7ade3b86379
Diffstat (limited to 'service')
-rw-r--r--service/java/com/android/server/wifi/EapFailureNotifier.java12
-rw-r--r--service/java/com/android/server/wifi/WifiContext.java13
2 files changed, 22 insertions, 3 deletions
diff --git a/service/java/com/android/server/wifi/EapFailureNotifier.java b/service/java/com/android/server/wifi/EapFailureNotifier.java
index fe4cfbd66..cdb120321 100644
--- a/service/java/com/android/server/wifi/EapFailureNotifier.java
+++ b/service/java/com/android/server/wifi/EapFailureNotifier.java
@@ -75,8 +75,16 @@ public class EapFailureNotifier {
Resources res = getResourcesForSubId(mContext,
mWifiCarrierInfoManager.getBestMatchSubscriptionId(config));
if (res == null) return;
- int resourceId = res.getIdentifier(ERROR_MESSAGE_OVERLAY_PREFIX + errorCode,
- "string", mContext.getWifiOverlayApkPkgName());
+ int resourceId = res.getIdentifier(
+ ERROR_MESSAGE_OVERLAY_PREFIX + errorCode,
+ "string",
+ // getIdentifier seems to use the Java package name rather than the Android
+ // application package name. i.e. what you would have used if the resource name was
+ // statically known:
+ // import com.android.wifi.resources.R;
+ // ...
+ // R.string.wifi_eap_error_message_code_###
+ mContext.getWifiOverlayJavaPkgName());
if (resourceId == 0) return;
String errorMessage = res.getString(resourceId, config.SSID);
diff --git a/service/java/com/android/server/wifi/WifiContext.java b/service/java/com/android/server/wifi/WifiContext.java
index b360a8e3c..bbcb9d8a7 100644
--- a/service/java/com/android/server/wifi/WifiContext.java
+++ b/service/java/com/android/server/wifi/WifiContext.java
@@ -40,6 +40,7 @@ public class WifiContext extends ContextWrapper {
/** Intent action that is used to identify ServiceWifiResources.apk */
private static final String ACTION_RESOURCES_APK =
"com.android.server.wifi.intent.action.SERVICE_WIFI_RESOURCES_APK";
+ private static final String WIFI_OVERLAY_JAVA_PKG_NAME = "com.android.wifi.resources";
private String mWifiOverlayApkPkgName;
@@ -52,7 +53,17 @@ public class WifiContext extends ContextWrapper {
super(contextBase);
}
- /** Get the package name of ServiceWifiResources.apk */
+ /**
+ * Get the Java package name of the resources in ServiceWifiResources.apk
+ *
+ * i.e. the package name of the Wifi Resources R class:
+ * {@code import com.android.wifi.resources.R;}, which is "com.android.wifi.resources"
+ */
+ public String getWifiOverlayJavaPkgName() {
+ return WIFI_OVERLAY_JAVA_PKG_NAME;
+ }
+
+ /** Get the Android application package name of ServiceWifiResources.apk */
public String getWifiOverlayApkPkgName() {
if (mWifiOverlayApkPkgName != null) {
return mWifiOverlayApkPkgName;