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 }