Merge changes I2d2aa89c,Ib507b449
* changes:
Build framework-wifi against core_current & framework-system-stubs
WifiNetworkSpecifier: get context reflectively
diff --git a/wifi/Android.bp b/wifi/Android.bp
index 4c9ee85..76ccc68 100644
--- a/wifi/Android.bp
+++ b/wifi/Android.bp
@@ -58,19 +58,20 @@
// classes before they are renamed.
java_library {
name: "framework-wifi-pre-jarjar",
- // TODO(b/140299412) should be core_current once we build against framework-system-stubs
- sdk_version: "core_platform",
+ // TODO(b/146757305): sdk_version should be "module_lib_current"
+ sdk_version: "core_current",
static_libs: [
"framework-wifi-util-lib",
"android.hardware.wifi-V1.0-java-constants",
],
libs: [
- // TODO(b/140299412) should be framework-system-stubs once we fix all @hide dependencies
- "framework-minus-apex",
"framework-annotations-lib",
"unsupportedappusage", // for android.compat.annotation.UnsupportedAppUsage
"unsupportedappusage-annotation", // for dalvik.annotation.compat.UnsupportedAppUsage
"framework-telephony-stubs",
+ // TODO(b/146757305): should be unnecessary once
+ // sdk_version="module_lib_current"
+ "android_system_stubs_current",
],
srcs: [
":framework-wifi-updatable-sources",
@@ -80,13 +81,21 @@
"//frameworks/opt/net/wifi/service",
"//frameworks/opt/net/wifi/tests/wifitests",
],
+
+ // TODO(b/146757305): should be unnecessary once
+ // sdk_version="module_lib_current"
+ aidl: {
+ include_dirs: [
+ "frameworks/base/core/java",
+ ],
+ },
}
// post-jarjar version of framework-wifi
java_library {
name: "framework-wifi",
- // TODO(b/140299412) should be core_current once we build against framework-system-stubs
- sdk_version: "core_platform",
+ // TODO(b/146757305): sdk_version should be "module_lib_current"
+ sdk_version: "core_current",
static_libs: [
"framework-wifi-pre-jarjar",
],
diff --git a/wifi/java/android/net/wifi/WifiNetworkSpecifier.java b/wifi/java/android/net/wifi/WifiNetworkSpecifier.java
index 07afd7f..444e1ef 100644
--- a/wifi/java/android/net/wifi/WifiNetworkSpecifier.java
+++ b/wifi/java/android/net/wifi/WifiNetworkSpecifier.java
@@ -20,7 +20,7 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
-import android.app.ActivityThread;
+import android.app.Application;
import android.net.MacAddress;
import android.net.MatchAllNetworkSpecifier;
import android.net.NetworkRequest;
@@ -30,8 +30,11 @@
import android.os.PatternMatcher;
import android.os.Process;
import android.text.TextUtils;
+import android.util.Log;
import android.util.Pair;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
import java.nio.charset.CharsetEncoder;
import java.nio.charset.StandardCharsets;
import java.util.Objects;
@@ -41,6 +44,7 @@
* {@link WifiNetworkSpecifier.Builder} class to create an instance.
*/
public final class WifiNetworkSpecifier extends NetworkSpecifier implements Parcelable {
+ private static final String TAG = "WifiNetworkSpecifier";
/**
* Builder used to create {@link WifiNetworkSpecifier} objects.
@@ -436,7 +440,22 @@
mBssidPatternMatcher,
buildWifiConfiguration(),
Process.myUid(),
- ActivityThread.currentApplication().getApplicationContext().getOpPackageName());
+ getCurrentApplicationReflectively().getApplicationContext().getOpPackageName());
+ }
+
+ // TODO(b/144102365): Remove once refactor is complete
+ private static Application getCurrentApplicationReflectively() {
+ try {
+ // reflection for static method android.app.ActivityThread#currentApplication()
+ Class<?> klass = Class.forName("android.app.ActivityThread");
+ Method currentApplicationMethod = klass.getDeclaredMethod("currentApplication");
+ Object result = currentApplicationMethod.invoke(null);
+ return (Application) result;
+ } catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException
+ | InvocationTargetException e) {
+ Log.e(TAG, "Failed to call ActivityThread#currentApplication() reflectively!", e);
+ throw new RuntimeException(e);
+ }
}
}