Size: a a a

Android NDK (C++) — русскоговорящее сообщество

2020 April 21

0

0x1de in Android NDK (C++) — русскоговорящее сообщество
Ребят в данный момент динамически регистрирую нативные методы через registerNatives. Но ему в любом случае требуется захардкоженное название пакета. Возможно ли как нибудь передать в нативный код название пакета для динамической  регистрации методов?
источник

V

Vologhat in Android NDK (C++) — русскоговорящее сообщество
0x1de
Ребят в данный момент динамически регистрирую нативные методы через registerNatives. Но ему в любом случае требуется захардкоженное название пакета. Возможно ли как нибудь передать в нативный код название пакета для динамической  регистрации методов?
Так это же изи...
источник

V

Vologhat in Android NDK (C++) — русскоговорящее сообщество
Получи контекст в jni_onload например и вызывай getPackageName
источник

V

Vologhat in Android NDK (C++) — русскоговорящее сообщество
Делов то
источник

0

0x1de in Android NDK (C++) — русскоговорящее сообщество
Vologhat
Получи контекст в jni_onload например и вызывай getPackageName
Благодарю, попробую
источник

0

0x1de in Android NDK (C++) — русскоговорящее сообщество
Если есть примеры буду признателен
источник

V

Vologhat in Android NDK (C++) — русскоговорящее сообщество
0x1de
Благодарю, попробую
Или сетер сделай из java
источник

V

Vologhat in Android NDK (C++) — русскоговорящее сообщество
Тоже как вариант
источник

V

Vologhat in Android NDK (C++) — русскоговорящее сообщество
0x1de
Если есть примеры буду признателен
Сейчас попробую...
источник

V

Vologhat in Android NDK (C++) — русскоговорящее сообщество
Или утром, с тела не гуд
источник

V

Vologhat in Android NDK (C++) — русскоговорящее сообщество
#include <jni.h>
#include <string>


extern "C"
{
JNIEnv *mEnv = NULL;

jobject getContext() {
   jclass activityThreadClz = mEnv->FindClass("android/app/ActivityThread");
   jmethodID currentActivityThreadMtd = mEnv->GetStaticMethodID(activityThreadClz,
                                                                "currentActivityThread",
                                                                "()Landroid/app/ActivityThread;");
   jobject activityThread = mEnv->CallStaticObjectMethod(activityThreadClz,
                                                         currentActivityThreadMtd);
   jmethodID getApplicationMtd = mEnv->GetMethodID(activityThreadClz, "getApplication",
                                                   "()Landroid/app/Application;");
   return mEnv->CallObjectMethod(activityThread, getApplicationMtd);
}
jstring package() {
   jclass context_class = mEnv->FindClass("android/content/Context");
   jmethodID package = mEnv->GetMethodID(toastClz, "getPackageName",
                                                   "()Ljava/lang/String;");
   jobject str = mEnv->CallObjectMethod(getContext(), package);
 return str;
}

JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) {
   vm->GetEnv((void **) &mEnv, JNI_VERSION_1_6);
   package();
   return JNI_VERSION_1_6;
}
}
источник

V

Vologhat in Android NDK (C++) — русскоговорящее сообщество
источник

V

Vologhat in Android NDK (C++) — русскоговорящее сообщество
Хз правильно или нет, компилятор подсветит
источник

V

Vologhat in Android NDK (C++) — русскоговорящее сообщество
Примерно так
источник

0

0x1de in Android NDK (C++) — русскоговорящее сообщество
Благодарю, я тоже этот кусок нашёл. Сейчас тестирую
источник

0

0x1de in Android NDK (C++) — русскоговорящее сообщество
Vologhat
Примерно так
Отпишусь о результате
источник

Я

Ярослав in Android NDK (C++) — русскоговорящее сообщество
Vologhat
#include <jni.h>
#include <string>


extern "C"
{
JNIEnv *mEnv = NULL;

jobject getContext() {
   jclass activityThreadClz = mEnv->FindClass("android/app/ActivityThread");
   jmethodID currentActivityThreadMtd = mEnv->GetStaticMethodID(activityThreadClz,
                                                                "currentActivityThread",
                                                                "()Landroid/app/ActivityThread;");
   jobject activityThread = mEnv->CallStaticObjectMethod(activityThreadClz,
                                                         currentActivityThreadMtd);
   jmethodID getApplicationMtd = mEnv->GetMethodID(activityThreadClz, "getApplication",
                                                   "()Landroid/app/Application;");
   return mEnv->CallObjectMethod(activityThread, getApplicationMtd);
}
jstring package() {
   jclass context_class = mEnv->FindClass("android/content/Context");
   jmethodID package = mEnv->GetMethodID(toastClz, "getPackageName",
                                                   "()Ljava/lang/String;");
   jobject str = mEnv->CallObjectMethod(getContext(), package);
 return str;
}

JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) {
   vm->GetEnv((void **) &mEnv, JNI_VERSION_1_6);
   package();
   return JNI_VERSION_1_6;
}
}
Поидеи должно работать
источник

V

Vologhat in Android NDK (C++) — русскоговорящее сообщество
Ярослав
Поидеи должно работать
Getpackagе статический?
источник

V

Vologhat in Android NDK (C++) — русскоговорящее сообщество
Вроде нет
источник

V

Vologhat in Android NDK (C++) — русскоговорящее сообщество
Раз из контекста вызывается
источник