diff options
author | David Su <dysu@google.com> | 2020-07-08 16:33:27 -0700 |
---|---|---|
committer | David Su <dysu@google.com> | 2020-07-10 22:56:13 +0000 |
commit | 000ad45722c73f345de77ff43973b2ed811b90e1 (patch) | |
tree | 621e976e278c1d50b0b36187146c0ddeb51a4942 /service | |
parent | 2022b51e1bf7fb88a409998b2bd31eaabe227e03 (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.java | 12 | ||||
-rw-r--r-- | service/java/com/android/server/wifi/WifiContext.java | 13 |
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; |