如 Android Developers page 中所述setDataAndType 方法可以这样调用:
auto setDataAndTypeFunctionId = env->GetMethodID(intentClassId, "setDataAndType", "(Landroid/net/Uri;Ljava/lang/String;)V");
jstring jmime = env->NewStringUTF("video/*");
env->CallVoidMethod(context, setDataAndTypeFunctionId, intentObject, UriObject, jmime);
但是当我运行我的应用程序时,这个错误显示在输出上:
java.lang.NoSuchMethodError: no method with name='setDataAndType' signature='(Landroid/net/Uri;Ljava/lang/String;)V' in class Landroid/content/Intent;
最佳答案
问题是返回类型,它不是 void。 setDataAndType方法返回 Intent
类型的对象。
使用以下签名:
env->GetMethodID(intentClassId, "setDataAndType", "(Landroid/net/Uri;Ljava/lang/String;)Landroid/content/Intent;");
此外,您应该使用 CallObjectMethod 而不是 CallVoidMethod,尽管这并不重要,因为您没有使用返回值。
关于java - SetDataAndType 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38573626/