SetDataAndType方法

时间:2016-07-25 17:03:18

标签: java android c++ java-native-interface

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;

1 个答案:

答案 0 :(得分:1)

问题是返回类型,它不是无效的。 setDataAndType方法返回Intent类型的对象。

使用以下签名:

env->GetMethodID(intentClassId, "setDataAndType", "(Landroid/net/Uri;Ljava/lang/String;)Landroid/content/Intent;");

此外,您应该使用CallObjectMethod而不是CallVoidMethod,尽管它并不重要,因为您没有使用返回值。