正在查看: 小柿子 v1.3.8 应用的 NetworkChangeNotifierAutoDetect.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: 小柿子 v1.3.8 应用的 NetworkChangeNotifierAutoDetect.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package aegon.chrome.net;
import aegon.chrome.base.ApplicationStatus;
import aegon.chrome.base.BuildConfig;
import aegon.chrome.base.ContextUtils;
import aegon.chrome.base.StrictModeContext;
import aegon.chrome.base.VisibleForTesting;
import aegon.chrome.base.compat.ApiHelperForM;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.LinkProperties;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkInfo;
import android.net.NetworkRequest;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.os.Handler;
import android.os.Looper;
import java.io.IOException;
import java.net.Socket;
import java.util.Arrays;
import javax.annotation.concurrent.GuardedBy;
@SuppressLint({"NewApi"})
public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver {
private static final String TAG = NetworkChangeNotifierAutoDetect.class.getSimpleName();
private static final int UNKNOWN_LINK_SPEED = -1;
private ConnectivityManagerDelegate mConnectivityManagerDelegate;
private DefaultNetworkCallback mDefaultNetworkCallback;
private final Handler mHandler;
private boolean mIgnoreNextBroadcast;
private final NetworkConnectivityIntentFilter mIntentFilter;
private final Looper mLooper;
private MyNetworkCallback mNetworkCallback;
private NetworkRequest mNetworkRequest;
private NetworkState mNetworkState;
private final Observer mObserver;
private boolean mRegisterNetworkCallbackFailed;
private boolean mRegistered;
private final RegistrationPolicy mRegistrationPolicy;
private boolean mShouldSignalObserver;
private WifiManagerDelegate mWifiManagerDelegate;
@TargetApi(21)
public class DefaultNetworkCallback extends ConnectivityManager.NetworkCallback {
private DefaultNetworkCallback() {
}
@Override
public void onAvailable(Network network) {
if (NetworkChangeNotifierAutoDetect.this.mRegistered) {
NetworkChangeNotifierAutoDetect.this.connectionTypeChanged();
}
}
@Override
public void onLinkPropertiesChanged(Network network, LinkProperties linkProperties) {
onAvailable(null);
}
@Override
public void onLost(Network network) {
onAvailable(null);
}
}
@TargetApi(21)
public class MyNetworkCallback extends ConnectivityManager.NetworkCallback {
public static final boolean $assertionsDisabled = false;
private Network mVpnInPlace;
private MyNetworkCallback() {
}
private boolean ignoreConnectedInaccessibleVpn(Network network, NetworkCapabilities networkCapabilities) {
if (networkCapabilities == null) {
networkCapabilities = NetworkChangeNotifierAutoDetect.this.mConnectivityManagerDelegate.getNetworkCapabilities(network);
}
if (networkCapabilities != null) {
return networkCapabilities.hasTransport(4) && !NetworkChangeNotifierAutoDetect.this.mConnectivityManagerDelegate.vpnAccessible(network);
}
return true;
}
private boolean ignoreConnectedNetwork(Network network, NetworkCapabilities networkCapabilities) {
return ignoreNetworkDueToVpn(network) || ignoreConnectedInaccessibleVpn(network, networkCapabilities);
}
private boolean ignoreNetworkDueToVpn(Network network) {
Network network2 = this.mVpnInPlace;
return (network2 == null || network2.equals(network)) ? false : true;
}
public void initializeVpnInPlace() {
NetworkCapabilities networkCapabilities;
Network[] allNetworksFiltered = NetworkChangeNotifierAutoDetect.getAllNetworksFiltered(NetworkChangeNotifierAutoDetect.this.mConnectivityManagerDelegate, null);
this.mVpnInPlace = null;
if (allNetworksFiltered.length == 1 && (networkCapabilities = NetworkChangeNotifierAutoDetect.this.mConnectivityManagerDelegate.getNetworkCapabilities(allNetworksFiltered[0])) != null && networkCapabilities.hasTransport(4)) {
this.mVpnInPlace = allNetworksFiltered[0];
}
}
@Override
public void onAvailable(Network network) {
NetworkCapabilities networkCapabilities = NetworkChangeNotifierAutoDetect.this.mConnectivityManagerDelegate.getNetworkCapabilities(network);
if (ignoreConnectedNetwork(network, networkCapabilities)) {
return;
}
final boolean hasTransport = networkCapabilities.hasTransport(4);
if (hasTransport) {
this.mVpnInPlace = network;
}
final long networkToNetId = NetworkChangeNotifierAutoDetect.networkToNetId(network);
final int connectionType = NetworkChangeNotifierAutoDetect.this.mConnectivityManagerDelegate.getConnectionType(network);
NetworkChangeNotifierAutoDetect.this.runOnThread(new Runnable() {
@Override
public void run() {
NetworkChangeNotifierAutoDetect.this.mObserver.onNetworkConnect(networkToNetId, connectionType);
if (hasTransport) {
NetworkChangeNotifierAutoDetect.this.mObserver.onConnectionTypeChanged(connectionType);
NetworkChangeNotifierAutoDetect.this.mObserver.purgeActiveNetworkList(new long[]{networkToNetId});
}
}
});
}
@Override
public void onCapabilitiesChanged(Network network, NetworkCapabilities networkCapabilities) {
if (ignoreConnectedNetwork(network, networkCapabilities)) {
return;
}
final long networkToNetId = NetworkChangeNotifierAutoDetect.networkToNetId(network);
final int connectionType = NetworkChangeNotifierAutoDetect.this.mConnectivityManagerDelegate.getConnectionType(network);
NetworkChangeNotifierAutoDetect.this.runOnThread(new Runnable() {
@Override
public void run() {
NetworkChangeNotifierAutoDetect.this.mObserver.onNetworkConnect(networkToNetId, connectionType);
}
});
}
@Override
public void onLosing(Network network, int i2) {
if (ignoreConnectedNetwork(network, null)) {
return;
}
final long networkToNetId = NetworkChangeNotifierAutoDetect.networkToNetId(network);
NetworkChangeNotifierAutoDetect.this.runOnThread(new Runnable() {
@Override
public void run() {
NetworkChangeNotifierAutoDetect.this.mObserver.onNetworkSoonToDisconnect(networkToNetId);
}
});
}
@Override
public void onLost(final Network network) {
if (ignoreNetworkDueToVpn(network)) {
return;
}
NetworkChangeNotifierAutoDetect.this.runOnThread(new Runnable() {
@Override
public void run() {
NetworkChangeNotifierAutoDetect.this.mObserver.onNetworkDisconnect(NetworkChangeNotifierAutoDetect.networkToNetId(network));
}
});
if (this.mVpnInPlace != null) {
this.mVpnInPlace = null;
for (Network network2 : NetworkChangeNotifierAutoDetect.getAllNetworksFiltered(NetworkChangeNotifierAutoDetect.this.mConnectivityManagerDelegate, network)) {
onAvailable(network2);
}
final int connectionType = NetworkChangeNotifierAutoDetect.this.getCurrentNetworkState().getConnectionType();
NetworkChangeNotifierAutoDetect.this.runOnThread(new Runnable() {
@Override
public void run() {
NetworkChangeNotifierAutoDetect.this.mObserver.onConnectionTypeChanged(connectionType);
}
});
}
}
}
public static class NetworkConnectivityIntentFilter extends IntentFilter {
public NetworkConnectivityIntentFilter() {
addAction("android.net.conn.CONNECTIVITY_CHANGE");
}
}
public static class NetworkState {
private final boolean mConnected;
private final boolean mIsPrivateDnsActive;
private final String mNetworkIdentifier;
private final int mSubtype;
private final int mType;
public NetworkState(boolean z, int i2, int i3, String str, boolean z2) {
this.mConnected = z;
this.mType = i2;
this.mSubtype = i3;
this.mNetworkIdentifier = str == null ? "" : str;
this.mIsPrivateDnsActive = z2;
}
public int getConnectionSubtype() {
if (!isConnected()) {
return 1;
}
if (getNetworkType() != 0) {
return 0;
}
switch (getNetworkSubType()) {
}
return 0;
}
public int getConnectionType() {
if (isConnected()) {
return NetworkChangeNotifierAutoDetect.convertToConnectionType(getNetworkType(), getNetworkSubType());
}
return 6;
}
public String getNetworkIdentifier() {
return this.mNetworkIdentifier;
}
public int getNetworkSubType() {
return this.mSubtype;
}
public int getNetworkType() {
return this.mType;
}
public boolean isConnected() {
return this.mConnected;
}
public boolean isPrivateDnsActive() {
return this.mIsPrivateDnsActive;
}
}
public interface Observer {
void onConnectionSubtypeChanged(int i2);
void onConnectionTypeChanged(int i2);
void onNetworkConnect(long j2, int i2);
void onNetworkDisconnect(long j2);
void onNetworkSoonToDisconnect(long j2);
void purgeActiveNetworkList(long[] jArr);
}
public static abstract class RegistrationPolicy {
public static final boolean $assertionsDisabled = false;
private NetworkChangeNotifierAutoDetect mNotifier;
public abstract void destroy();
public void init(NetworkChangeNotifierAutoDetect networkChangeNotifierAutoDetect) {
this.mNotifier = networkChangeNotifierAutoDetect;
}
public final void register() {
this.mNotifier.register();
}
public final void unregister() {
this.mNotifier.unregister();
}
}
@TargetApi(21)
public NetworkChangeNotifierAutoDetect(Observer observer, RegistrationPolicy registrationPolicy) {
Looper myLooper = Looper.myLooper();
this.mLooper = myLooper;
this.mHandler = new Handler(myLooper);
this.mObserver = observer;
this.mConnectivityManagerDelegate = new ConnectivityManagerDelegate(ContextUtils.getApplicationContext());
int i2 = Build.VERSION.SDK_INT;
if (i2 < 23) {
this.mWifiManagerDelegate = new WifiManagerDelegate(ContextUtils.getApplicationContext());
}
Object[] objArr = 0;
Object[] objArr2 = 0;
if (i2 >= 21) {
this.mNetworkCallback = new MyNetworkCallback();
this.mNetworkRequest = new NetworkRequest.Builder().addCapability(12).removeCapability(15).build();
} else {
this.mNetworkCallback = null;
this.mNetworkRequest = null;
}
this.mDefaultNetworkCallback = i2 >= 28 ? new DefaultNetworkCallback() : null;
this.mNetworkState = getCurrentNetworkState();
this.mIntentFilter = new NetworkConnectivityIntentFilter();
this.mIgnoreNextBroadcast = false;
this.mShouldSignalObserver = false;
this.mRegistrationPolicy = registrationPolicy;
registrationPolicy.init(this);
this.mShouldSignalObserver = true;
}
private void assertOnThread() {
if (BuildConfig.DCHECK_IS_ON && !onThread()) {
throw new IllegalStateException("Must be called on NetworkChangeNotifierAutoDetect thread.");
}
}
public void connectionTypeChanged() {
NetworkState currentNetworkState = getCurrentNetworkState();
if (currentNetworkState.getConnectionType() != this.mNetworkState.getConnectionType() || !currentNetworkState.getNetworkIdentifier().equals(this.mNetworkState.getNetworkIdentifier()) || currentNetworkState.isPrivateDnsActive() != this.mNetworkState.isPrivateDnsActive()) {
this.mObserver.onConnectionTypeChanged(currentNetworkState.getConnectionType());
}
if (currentNetworkState.getConnectionType() != this.mNetworkState.getConnectionType() || currentNetworkState.getConnectionSubtype() != this.mNetworkState.getConnectionSubtype()) {
this.mObserver.onConnectionSubtypeChanged(currentNetworkState.getConnectionSubtype());
}
this.mNetworkState = currentNetworkState;
}
public static int convertToConnectionType(int i2, int i3) {
int i4 = 5;
if (i2 == 0) {
switch (i3) {
case 1:
case 2:
case 4:
case 7:
case 11:
return 3;
case 3:
case 5:
case 6:
case 8:
case 9:
case 10:
case 12:
case 14:
case 15:
return 4;
case 13:
return 5;
default:
return 0;
}
}
if (i2 == 1) {
return 2;
}
if (i2 != 6) {
i4 = 7;
if (i2 != 7) {
return i2 != 9 ? 0 : 1;
}
}
return i4;
}
@TargetApi(21)
public static Network[] getAllNetworksFiltered(ConnectivityManagerDelegate connectivityManagerDelegate, Network network) {
NetworkCapabilities networkCapabilities;
Network[] allNetworksUnfiltered = connectivityManagerDelegate.getAllNetworksUnfiltered();
int i2 = 0;
for (Network network2 : allNetworksUnfiltered) {
if (!network2.equals(network) && (networkCapabilities = connectivityManagerDelegate.getNetworkCapabilities(network2)) != null && networkCapabilities.hasCapability(12)) {
if (!networkCapabilities.hasTransport(4)) {
allNetworksUnfiltered[i2] = network2;
i2++;
} else if (connectivityManagerDelegate.vpnAccessible(network2)) {
return new Network[]{network2};
}
}
}
return (Network[]) Arrays.copyOf(allNetworksUnfiltered, i2);
}
@VisibleForTesting
@TargetApi(21)
public static long networkToNetId(Network network) {
return Build.VERSION.SDK_INT >= 23 ? ApiHelperForM.getNetworkHandle(network) : Integer.parseInt(network.toString());
}
private boolean onThread() {
return this.mLooper == Looper.myLooper();
}
public void runOnThread(Runnable runnable) {
if (onThread()) {
runnable.run();
} else {
this.mHandler.post(runnable);
}
}
public void destroy() {
assertOnThread();
this.mRegistrationPolicy.destroy();
unregister();
}
public NetworkState getCurrentNetworkState() {
return this.mConnectivityManagerDelegate.getNetworkState(this.mWifiManagerDelegate);
}
public long getDefaultNetId() {
Network defaultNetwork;
if (Build.VERSION.SDK_INT >= 21 && (defaultNetwork = this.mConnectivityManagerDelegate.getDefaultNetwork()) != null) {
return networkToNetId(defaultNetwork);
}
return -1L;
}
public long[] getNetworksAndTypes() {
if (Build.VERSION.SDK_INT < 21) {
return new long[0];
}
Network[] allNetworksFiltered = getAllNetworksFiltered(this.mConnectivityManagerDelegate, null);
long[] jArr = new long[allNetworksFiltered.length * 2];
int i2 = 0;
for (Network network : allNetworksFiltered) {
int i3 = i2 + 1;
jArr[i2] = networkToNetId(network);
i2 = i3 + 1;
jArr[i3] = this.mConnectivityManagerDelegate.getConnectionType(r5);
}
return jArr;
}
@VisibleForTesting
public RegistrationPolicy getRegistrationPolicy() {
return this.mRegistrationPolicy;
}
@VisibleForTesting
public boolean isReceiverRegisteredForTesting() {
return this.mRegistered;
}
@Override
public void onReceive(Context context, Intent intent) {
runOnThread(new Runnable() {
@Override
public void run() {
if (NetworkChangeNotifierAutoDetect.this.mRegistered) {
if (NetworkChangeNotifierAutoDetect.this.mIgnoreNextBroadcast) {
NetworkChangeNotifierAutoDetect.this.mIgnoreNextBroadcast = false;
} else {
NetworkChangeNotifierAutoDetect.this.connectionTypeChanged();
}
}
}
});
}
public void register() {
assertOnThread();
if (this.mRegistered) {
return;
}
if (this.mShouldSignalObserver) {
connectionTypeChanged();
}
DefaultNetworkCallback defaultNetworkCallback = this.mDefaultNetworkCallback;
if (defaultNetworkCallback != null) {
try {
this.mConnectivityManagerDelegate.registerDefaultNetworkCallback(defaultNetworkCallback, this.mHandler);
} catch (RuntimeException unused) {
this.mDefaultNetworkCallback = null;
}
}
if (this.mDefaultNetworkCallback == null) {
this.mIgnoreNextBroadcast = ContextUtils.getApplicationContext().registerReceiver(this, this.mIntentFilter) != null;
}
this.mRegistered = true;
MyNetworkCallback myNetworkCallback = this.mNetworkCallback;
if (myNetworkCallback != null) {
myNetworkCallback.initializeVpnInPlace();
try {
this.mConnectivityManagerDelegate.registerNetworkCallback(this.mNetworkRequest, this.mNetworkCallback, this.mHandler);
} catch (RuntimeException unused2) {
this.mRegisterNetworkCallbackFailed = true;
this.mNetworkCallback = null;
}
if (this.mRegisterNetworkCallbackFailed || !this.mShouldSignalObserver) {
return;
}
Network[] allNetworksFiltered = getAllNetworksFiltered(this.mConnectivityManagerDelegate, null);
long[] jArr = new long[allNetworksFiltered.length];
for (int i2 = 0; i2 < allNetworksFiltered.length; i2++) {
jArr[i2] = networkToNetId(allNetworksFiltered[i2]);
}
this.mObserver.purgeActiveNetworkList(jArr);
}
}
public boolean registerNetworkCallbackFailed() {
return this.mRegisterNetworkCallbackFailed;
}
public void setConnectivityManagerDelegateForTests(ConnectivityManagerDelegate connectivityManagerDelegate) {
this.mConnectivityManagerDelegate = connectivityManagerDelegate;
}
public void setWifiManagerDelegateForTests(WifiManagerDelegate wifiManagerDelegate) {
this.mWifiManagerDelegate = wifiManagerDelegate;
}
public void unregister() {
assertOnThread();
if (this.mRegistered) {
this.mRegistered = false;
MyNetworkCallback myNetworkCallback = this.mNetworkCallback;
if (myNetworkCallback != null) {
this.mConnectivityManagerDelegate.unregisterNetworkCallback(myNetworkCallback);
}
DefaultNetworkCallback defaultNetworkCallback = this.mDefaultNetworkCallback;
if (defaultNetworkCallback != null) {
this.mConnectivityManagerDelegate.unregisterNetworkCallback(defaultNetworkCallback);
} else {
ContextUtils.getApplicationContext().unregisterReceiver(this);
}
}
}
public static class ConnectivityManagerDelegate {
public static final boolean $assertionsDisabled = false;
private final ConnectivityManager mConnectivityManager;
public ConnectivityManagerDelegate(Context context) {
this.mConnectivityManager = (ConnectivityManager) context.getSystemService("connectivity");
}
private NetworkInfo getNetworkInfo(Network network) {
try {
try {
return this.mConnectivityManager.getNetworkInfo(network);
} catch (Exception unused) {
return null;
}
} catch (Exception unused2) {
return this.mConnectivityManager.getNetworkInfo(network);
}
}
@TargetApi(21)
private NetworkInfo processActiveNetworkInfo(NetworkInfo networkInfo) {
if (networkInfo == null) {
return null;
}
if (networkInfo.isConnected()) {
return networkInfo;
}
if (Build.VERSION.SDK_INT >= 21 && networkInfo.getDetailedState() == NetworkInfo.DetailedState.BLOCKED && ApplicationStatus.getStateForApplication() == 1) {
return networkInfo;
}
return null;
}
@VisibleForTesting
@TargetApi(21)
public Network[] getAllNetworksUnfiltered() {
Network[] allNetworks = this.mConnectivityManager.getAllNetworks();
return allNetworks == null ? new Network[0] : allNetworks;
}
@TargetApi(21)
public int getConnectionType(Network network) {
NetworkInfo networkInfo = getNetworkInfo(network);
if (networkInfo != null && networkInfo.getType() == 17) {
networkInfo = this.mConnectivityManager.getActiveNetworkInfo();
}
if (networkInfo == null || !networkInfo.isConnected()) {
return 6;
}
return NetworkChangeNotifierAutoDetect.convertToConnectionType(networkInfo.getType(), networkInfo.getSubtype());
}
@TargetApi(21)
public Network getDefaultNetwork() {
Network network;
if (Build.VERSION.SDK_INT >= 23) {
network = ApiHelperForM.getActiveNetwork(this.mConnectivityManager);
if (network != null) {
return network;
}
} else {
network = null;
}
NetworkInfo activeNetworkInfo = this.mConnectivityManager.getActiveNetworkInfo();
if (activeNetworkInfo == null) {
return null;
}
for (Network network2 : NetworkChangeNotifierAutoDetect.getAllNetworksFiltered(this, null)) {
NetworkInfo networkInfo = getNetworkInfo(network2);
if (networkInfo != null && (networkInfo.getType() == activeNetworkInfo.getType() || networkInfo.getType() == 17)) {
network = network2;
}
}
return network;
}
@VisibleForTesting
@TargetApi(21)
public NetworkCapabilities getNetworkCapabilities(Network network) {
try {
return this.mConnectivityManager.getNetworkCapabilities(network);
} catch (Exception unused) {
return null;
}
}
public aegon.chrome.net.NetworkChangeNotifierAutoDetect.NetworkState getNetworkState(aegon.chrome.net.NetworkChangeNotifierAutoDetect.WifiManagerDelegate r17) {
throw new UnsupportedOperationException("Method not decompiled: aegon.chrome.net.NetworkChangeNotifierAutoDetect.ConnectivityManagerDelegate.getNetworkState(aegon.chrome.net.NetworkChangeNotifierAutoDetect$WifiManagerDelegate):aegon.chrome.net.NetworkChangeNotifierAutoDetect$NetworkState");
}
@TargetApi(28)
public void registerDefaultNetworkCallback(ConnectivityManager.NetworkCallback networkCallback, Handler handler) {
this.mConnectivityManager.registerDefaultNetworkCallback(networkCallback, handler);
}
@TargetApi(21)
public void registerNetworkCallback(NetworkRequest networkRequest, ConnectivityManager.NetworkCallback networkCallback, Handler handler) {
if (Build.VERSION.SDK_INT >= 26) {
this.mConnectivityManager.registerNetworkCallback(networkRequest, networkCallback, handler);
} else {
this.mConnectivityManager.registerNetworkCallback(networkRequest, networkCallback);
}
}
@TargetApi(21)
public void unregisterNetworkCallback(ConnectivityManager.NetworkCallback networkCallback) {
this.mConnectivityManager.unregisterNetworkCallback(networkCallback);
}
@VisibleForTesting
@TargetApi(21)
public boolean vpnAccessible(Network network) {
Socket socket = new Socket();
try {
try {
StrictModeContext allowAllVmPolicies = StrictModeContext.allowAllVmPolicies();
try {
network.bindSocket(socket);
if (allowAllVmPolicies != null) {
allowAllVmPolicies.close();
}
try {
socket.close();
return true;
} catch (IOException unused) {
return true;
}
} catch (Throwable th) {
try {
throw th;
} catch (Throwable th2) {
if (allowAllVmPolicies != null) {
try {
allowAllVmPolicies.close();
} catch (Throwable th3) {
th.addSuppressed(th3);
}
}
throw th2;
}
}
} catch (IOException unused2) {
return false;
}
} catch (IOException unused3) {
socket.close();
return false;
} catch (Throwable th4) {
try {
socket.close();
} catch (IOException unused4) {
}
throw th4;
}
}
public ConnectivityManagerDelegate() {
this.mConnectivityManager = null;
}
}
public static class WifiManagerDelegate {
public static final boolean $assertionsDisabled = false;
private final Context mContext;
@GuardedBy("mLock")
private boolean mHasWifiPermission;
@GuardedBy("mLock")
private boolean mHasWifiPermissionComputed;
private final Object mLock;
@GuardedBy("mLock")
private WifiManager mWifiManager;
public WifiManagerDelegate(Context context) {
this.mLock = new Object();
this.mContext = context;
}
@GuardedBy("mLock")
private WifiInfo getWifiInfoLocked() {
try {
try {
return this.mWifiManager.getConnectionInfo();
} catch (NullPointerException unused) {
return null;
}
} catch (NullPointerException unused2) {
return this.mWifiManager.getConnectionInfo();
}
}
@GuardedBy("mLock")
@SuppressLint({"WifiManagerPotentialLeak"})
private boolean hasPermissionLocked() {
if (this.mHasWifiPermissionComputed) {
return this.mHasWifiPermission;
}
boolean z = this.mContext.getPackageManager().checkPermission("android.permission.ACCESS_WIFI_STATE", this.mContext.getPackageName()) == 0;
this.mHasWifiPermission = z;
this.mWifiManager = z ? (WifiManager) this.mContext.getSystemService("wifi") : null;
this.mHasWifiPermissionComputed = true;
return this.mHasWifiPermission;
}
public String getWifiSsid() {
synchronized (this.mLock) {
if (!hasPermissionLocked()) {
return AndroidNetworkLibrary.getWifiSSID();
}
WifiInfo wifiInfoLocked = getWifiInfoLocked();
if (wifiInfoLocked == null) {
return "";
}
return wifiInfoLocked.getSSID();
}
}
public WifiManagerDelegate() {
this.mLock = new Object();
this.mContext = null;
}
}
}