java - SetDataAndType 方法

标签 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;

最佳答案

问题是返回类型,它不是 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/

相关文章:

java - 如何在带有注释的mybatis和oracle中插入时返回ID

Android Socket 被挂起

c++ - 为什么在 fopen() 没有关闭之后调用 close()?

c++ - 继承时,基类的基类是否也被继承?

c++ - 编译带时间符号的移位运算符

java - 在java中按值对 map 列表进行排序

java - 服务启动时显示的Android通知在创建后立即取消

java - Web 服务响应超时?

android - AsyncTask 完成时强制 BaseAdapter 更新其 View

android - 如何从地理点获取行车方向数据?