正在查看: Vi App v10.18.0 应用的 AndroidNetworkConnectivityChecker.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: Vi App v10.18.0 应用的 AndroidNetworkConnectivityChecker.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package com.amplitude.android.utilities;
import android.annotation.SuppressLint;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkInfo;
import com.amplitude.common.Logger;
import kotlin.ExceptionsKt;
import kotlin.jvm.internal.DefaultConstructorMarker;
import kotlin.jvm.internal.Intrinsics;
import org.jetbrains.annotations.NotNull;
public final class AndroidNetworkConnectivityChecker {
@NotNull
public static final Companion Companion = new Companion(null);
@NotNull
private final Context context;
private final boolean hasPermission;
private boolean isMarshmallowAndAbove;
@NotNull
private final Logger logger;
public static final class Companion {
private Companion() {
}
public Companion(DefaultConstructorMarker defaultConstructorMarker) {
this();
}
}
public AndroidNetworkConnectivityChecker(@NotNull Context context, @NotNull Logger logger) {
Intrinsics.checkNotNullParameter(context, "context");
Intrinsics.checkNotNullParameter(logger, "logger");
this.context = context;
this.logger = logger;
this.isMarshmallowAndAbove = true;
boolean hasPermission = hasPermission(context, "android.permission.ACCESS_NETWORK_STATE");
this.hasPermission = hasPermission;
if (hasPermission) {
return;
}
logger.warn("No ACCESS_NETWORK_STATE permission, offline mode is not supported. To enable, add <uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\" /> to your AndroidManifest.xml. Learn more at https://www.docs.developers.amplitude.com/data/sdks/android-kotlin/#offline-mode");
}
private final boolean hasPermission(Context context, String str) {
return context.checkCallingOrSelfPermission(str) == 0;
}
@SuppressLint({"MissingPermission", "NewApi"})
public final boolean isConnected() {
NetworkCapabilities networkCapabilities;
if (!this.hasPermission) {
return true;
}
try {
Object systemService = this.context.getSystemService("connectivity");
if (!(systemService instanceof ConnectivityManager)) {
this.logger.debug("Service is not an instance of ConnectivityManager. Offline mode is not supported");
return true;
}
if (!this.isMarshmallowAndAbove) {
NetworkInfo activeNetworkInfo = ((ConnectivityManager) systemService).getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnectedOrConnecting();
}
Network activeNetwork = ((ConnectivityManager) systemService).getActiveNetwork();
if (activeNetwork == null || (networkCapabilities = ((ConnectivityManager) systemService).getNetworkCapabilities(activeNetwork)) == null) {
return false;
}
if (!networkCapabilities.hasTransport(1) && !networkCapabilities.hasTransport(0)) {
return false;
}
return true;
} catch (Throwable th) {
this.logger.warn("Error checking network connectivity: " + th.getMessage());
this.logger.warn(ExceptionsKt.stackTraceToString(th));
return true;
}
}
}