[Android] используется "API вызова jni". (C ++ -> My.Java)
Успешность вызова метода My.java из c ++.
Однако, Моя проблема, невозможно получить дескриптор через getService (ServiceManager) внутри метода My.Java.
Если вы создадите экземпляр my.java в приложении для Android, getservice будет работать.
но getService завершается ошибкой при вызове метода в My.java из исполняемого файла C ++ (JNI Invocation). (нужно наследование контекста?: но «API вызова JNI» не работает при наследовании контекста.)
C ++ (Call Java)
int JNI_Call_RadioManager(const char* str, int vel){
jmethodID Method = nullptr;
if(!JNI_EnvCheck()){return -1;}
Method = ENV->GetStaticMethodID(CLS,"RadioManager_call", "(Ljava/lang/String;I)V");
if (Method) {
ENV->CallStaticVoidMethod(CLS,Method,ENV->NewStringUTF(str), vel);
log(STAGI"JNI_Call_RadioManager \n");
}else
log(STAGE"JNI_Call_RadioManager Err \n");
return 0;
My.java
private static void RadioManager_call(String str, int num){
getService();
}
private static IRadioService getService() {
LOG.info("[ JNI ] getService\n");
if (sService == null) {
IBinder b = ServiceManager.getService(Service.RADIO_SERVICE); //Error
sService = IRadioService.Stub.asInterface(b);
}
return sService;
}
(Logcat Log)
Не найдена реализация для int android.os.SystemProperties.native_get_int (java.lang.String, int) (пробовал Java_android_os_SystemProperties_native_1get_1int и Java_android_os_SystemProperties_native_1get_1int__Ljava_lang_String_2)
Landroid / OS / ServiceManager; не удалось инициализировать: java.lang.UnsatisfiedLinkError: Не найдена реализация для int android.os.SystemProperties.native_get_int (java.lang.String, int) (пробовали Java_android_os_SystemProperties_native_1get_1int и Java_android_os_SystemProperties_ava_1_1_1_1_1_1_1_1_1_1_1_1)