Tôi đang cố gắng tạo phương thức kiểm tra kết nối internet cần tham số Ngữ cảnh. JNIHelper cho phép tôi gọi các hàm tĩnh với các tham số, nhưng tôi không biết cách "truy xuất" lớp Cocos2d-x Activity để sử dụng nó như một tham số.Gửi tham số android.content.Context tới một hàm với JNI
public static boolean isNetworkAvailable(Context context) {
boolean haveConnectedWifi = false;
boolean haveConnectedMobile = false;
ConnectivityManager cm =
(ConnectivityManager) context.getSystemService(
Context.CONNECTIVITY_SERVICE);
NetworkInfo[] netInfo = cm.getAllNetworkInfo();
for (NetworkInfo ni : netInfo) {
if (ni.getTypeName().equalsIgnoreCase("WIFI"))
if (ni.isConnected())
haveConnectedWifi = true;
if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
if (ni.isConnected())
haveConnectedMobile = true;
}
return haveConnectedWifi || haveConnectedMobile;
}
và C++ code đang
JniMethodInfo methodInfo;
if (!JniHelper::getStaticMethodInfo(methodInfo,
"my/app/TestApp", "isNetworkAvailable", "(Landroid/content/Context;)Z")) {
//error
return;
}
CCLog("Method found and loaded!");
methodInfo.env->CallStaticBooleanMethod(methodInfo.classID,
methodInfo.methodID);
methodInfo.env->DeleteLocalRef(methodInfo.classID);
Bạn có thể cho tôi biết tại sao bạn cần bối cảnh này? Chỉ để có được getSystemService ????? –
Đây không phải là giải pháp, nhưng bộ mô tả cho isNetworkAvailable là sai. Nó phải là: "(Landroid/content/Context;) Z". Lưu ý L và Z –