summaryrefslogtreecommitdiff
path: root/framework-t/src
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2022-01-17 15:28:46 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2022-01-17 15:28:46 +0000
commit703b9219a6b0d065147315369ad046d732815cdc (patch)
treefbc2c768fbc20fcb1483f7b2bbbc6ff09540a5f8 /framework-t/src
parentb939b68df80bd7fb242ec2d061f29cb13961a15c (diff)
parentd3cb2bae4f11930a85294bcf0b320099de26557a (diff)
Merge "[MS30] Remove ServiceManager#getService dependency"
Diffstat (limited to 'framework-t/src')
-rw-r--r--framework-t/src/android/net/TrafficStats.java23
1 files changed, 20 insertions, 3 deletions
diff --git a/framework-t/src/android/net/TrafficStats.java b/framework-t/src/android/net/TrafficStats.java
index d8feb88f0f..032bc3f402 100644
--- a/framework-t/src/android/net/TrafficStats.java
+++ b/framework-t/src/android/net/TrafficStats.java
@@ -17,6 +17,7 @@
package android.net;
import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.annotation.SuppressLint;
import android.annotation.SystemApi;
import android.annotation.TestApi;
@@ -27,8 +28,8 @@ import android.compat.annotation.UnsupportedAppUsage;
import android.content.Context;
import android.media.MediaPlayer;
import android.os.Build;
+import android.os.IBinder;
import android.os.RemoteException;
-import android.os.ServiceManager;
import com.android.server.NetworkManagementSocketTagger;
@@ -36,6 +37,8 @@ import dalvik.system.SocketTagger;
import java.io.FileDescriptor;
import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
import java.net.DatagramSocket;
import java.net.Socket;
import java.net.SocketException;
@@ -53,6 +56,7 @@ import java.net.SocketException;
* use {@link NetworkStatsManager} instead.
*/
public class TrafficStats {
+ private static final String TAG = TrafficStats.class.getSimpleName();
/**
* The return value to indicate that the device does not support the statistic.
*/
@@ -173,12 +177,25 @@ public class TrafficStats {
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 130143562)
private synchronized static INetworkStatsService getStatsService() {
if (sStatsService == null) {
- sStatsService = INetworkStatsService.Stub.asInterface(
- ServiceManager.getService(Context.NETWORK_STATS_SERVICE));
+ sStatsService = getStatsBinder();
}
return sStatsService;
}
+ @Nullable
+ private static INetworkStatsService getStatsBinder() {
+ try {
+ final Method getServiceMethod = Class.forName("android.os.ServiceManager")
+ .getDeclaredMethod("getService", new Class[]{String.class});
+ final IBinder binder = (IBinder) getServiceMethod.invoke(
+ null, Context.NETWORK_STATS_SERVICE);
+ return INetworkStatsService.Stub.asInterface(binder);
+ } catch (NoSuchMethodException | ClassNotFoundException | IllegalAccessException
+ | InvocationTargetException e) {
+ throw new NullPointerException("Cannot get INetworkStatsService: " + e);
+ }
+ }
+
/**
* Snapshot of {@link NetworkStats} when the currently active profiling
* session started, or {@code null} if no session active.