File indexing completed on 2024-05-05 05:41:37
0001 0002 #define jclass int 0003 #define jint int 0004 #define jstring int 0005 0006 // Crude approximation of #include <QAndroidJniObject> so we don't need QtAndroidExtras installed 0007 class QAndroidJniObject 0008 { 0009 public: 0010 QAndroidJniObject(const char *className, const char *signature); 0011 QAndroidJniObject(jclass theClass, const char *signature); 0012 0013 template <typename T> 0014 void callObjectMethod(const char *methodName, const char *signature); 0015 0016 template <typename T> 0017 void callMethod(const char *methodName, const char *signature); 0018 0019 template <typename T> 0020 static void callStaticMethod(const char *className, const char *methodName, const char *signature); 0021 0022 template <typename T> 0023 static void callStaticObjectMethod(const char *className, const char *methodName, const char *signature); 0024 0025 }; 0026 0027 namespace QtAndroid { 0028 void androidActivity(); 0029 }; 0030 0031 int main() { 0032 0033 0034 QAndroidJniObject obj("/java/lang/String", "("); 0035 0036 jclass foo = 1; 0037 QAndroidJniObject obj2(foo, "()V"); 0038 0039 obj.callObjectMethod<int>("someMethod", "()V"); 0040 obj.callObjectMethod<int>("someMethod", "(III)V"); 0041 obj.callObjectMethod<int>("someMethod", "(III"); 0042 0043 obj.callMethod<jint>("someMethod", "()V"); 0044 obj.callMethod<jint>("someMethod", "(III)V"); 0045 obj.callMethod<jint>("someMethod", "()Ljava/lang/String"); 0046 0047 QAndroidJniObject::callStaticMethod<jint>("someClass;", "someMethod", "()Ljava/lang/String"); 0048 0049 QAndroidJniObject::callStaticObjectMethod<int>("someClass", "someOtherMethod", "(II)"); 0050 0051 obj.callObjectMethod<jstring>("className;", "toString"); 0052 0053 QtAndroid::androidActivity(); 0054 }