Context 매개 변수가 필요한 인터넷 연결을 확인하는 메서드를 만들려고합니다. JNIHelper를 사용하면 매개 변수가있는 정적 함수를 호출 할 수 있지만 Cocos2d-x Activity 클래스를 "검색하여"매개 변수로 사용하는 방법을 모르겠습니다.JNI가있는 함수에 android.content.Context 매개 변수 보내기
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;
}
와 C++ 코드가
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);
당신이 말해 줄 수 : 앱 클래스와 그것을 사용 가져 오는 등
, I합니다 (C++ 부분)에 다음 코드를 사용하는 거라고? 그냥 getSystemService를 얻으려면 ????? –
이것은 해결책은 아니지만 isNetworkAvailable에 대한 설명자가 잘못되었습니다. "(Landroid/content/Context;) Z"여야합니다. L 및 Z를 참고하십시오. –