bool IsVPNEnabled() {
JNIEnv *env;
gJavaVM->AttachCurrentThread(&env, 0);
jclass ctx = env->FindClass(OBFUSCATE("android/content/Context"));
jobject context = getGlobalContext(env);
jmethodID service = env->GetMethodID(ctx, OBFUSCATE("getSystemService"), OBFUSCATE("(Ljava/lang/String;)Ljava/lang/Object;"));
jstring str = env->NewStringUTF(OBFUSCATE("connectivity"));
jobject conn_service = env->CallObjectMethod(context, service, str);
env->DeleteLocalRef(str);
jclass connectivity = env->FindClass(OBFUSCATE("android/net/ConnectivityManager"));
jclass capabils = env->FindClass(OBFUSCATE("android/net/NetworkCapabilities"));
jmethodID has1 = env->GetMethodID(capabils, OBFUSCATE("hasCapability"), OBFUSCATE("(I)Z"));
jmethodID has = env->GetMethodID(capabils, OBFUSCATE("hasTransport"), OBFUSCATE("(I)Z"));
jmethodID getCapabil = env->GetMethodID(connectivity, OBFUSCATE("getNetworkCapabilities"), OBFUSCATE("(Landroid/net/Network;)Landroid/net/NetworkCapabilities;"));
jmethodID getActive = env->GetMethodID(connectivity, OBFUSCATE("getActiveNetwork"), OBFUSCATE("()Landroid/net/Network;"));
jobject activenetwork = env->CallObjectMethod(conn_service, getActive);
jobject activecapabilities = env->CallObjectMethod(conn_service, getCapabil, activenetwork);
jboolean hasvpn1 = env->CallBooleanMethod(activecapabilities, has, 4);
jboolean hasvpn2 = env->CallBooleanMethod(activecapabilities, has1, 4);
if (hasvpn1 || hasvpn2) {
env->DeleteLocalRef(activenetwork);
env->DeleteLocalRef(activecapabilities);
env->DeleteLocalRef(conn_service);
env->DeleteLocalRef(ctx);
env->DeleteLocalRef(context);
env->DeleteLocalRef(capabils);
env->DeleteLocalRef(connectivity);
return true;
} else {
env->DeleteLocalRef(activenetwork);
env->DeleteLocalRef(activecapabilities);
env->DeleteLocalRef(conn_service);
env->DeleteLocalRef(ctx);
7 · 215 · 18:42