Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何从C++ / JNI调用接受Android上下文参数的Java方法

如何从C++ / JNI调用接受Android上下文参数的Java方法
EN

Stack Overflow用户
提问于 2013-03-11 01:22:31
回答 2查看 2.2K关注 0票数 5

我正在尝试通过Android上的C++/JNI调用Java类。更具体地说,我试图调用这个类的构造函数,它接受一个Android上下文作为参数。如果我的构造函数没有参数,我可以成功地进行调用,但是当我包含必要的上下文作为参数时,我不知道我的JNI签名应该是什么样子,也不知道这是否可能,因为我无法访问该上下文对象。

所以,我的问题是,是否可以调用Java类的构造函数,并将Android上下文作为其唯一的参数?如果是这样的话,是怎么做的?如果没有,有没有解决方法,因为我需要上下文来访问某些Android API类。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-12 00:07:21

我不相信以你所说的方式是可能的。但是,在不知道类结构的情况下,您可以始终将其创建为一个具有静态实例的单例实例,该实例在您的活动启动时被实例化,从而该类在那时获得了所需的上下文。它基本上会一直放在那里,直到你准备好从C++调用它,但它确实可以通过上下文为你的请求提供服务。

票数 2
EN

Stack Overflow用户

发布于 2013-03-11 04:29:12

在获取构造函数的方法ID时,只需指定所需的方法ID即可。目前,您可能正在执行以下操作:

代码语言:javascript
运行
AI代码解释
复制
constructor = (*env)->GetMethodID(env, cls, "<init>", "()V");
object = (*env)->NewObject(env, cls, constructor);

相反,您希望在使用GetMethodID时指定参数的类型,并在调用NewObject时将其传入。

代码语言:javascript
运行
AI代码解释
复制
constructor = (*env)->GetMethodID(env, cls, "<init>", "(Landroid/content/Context;)V");
object = (*env)->NewObject(env, cls, constructor, context);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15329841

复制
相关文章
Android 通过 JNI 访问 Java 字段和方法调用
在前面的两篇文章中,介绍了 Android 通过 JNI 进行基础类型、字符串和数组的相关操作,并描述了 Java 和 Native 在类型和签名之间的转换关系。
音视频开发进阶
2019/07/26
1.1K0
JNI--c/c++调用Java方法
上次说到c/c++调用Java的变量,同样的c/c++也可以调用Java的方法 1.c/c++native方法调用Java非静态方法 首先看下我们Java的类 package com.aruba.jniapplication; import java.util.Random; public class JniDemo2 { static { System.load("C:\\Users\\tyqhc\\source\\repos\\JniApplication\\x64\\De
aruba
2020/07/03
4.6K0
Android 通过 JNI 调用 Java 类的构造方法和父类的方法
Android 还可以通过 JNI 来调用 Java 一个类的构造方法,从而创建一个 Java 类。
音视频开发进阶
2019/07/26
2.7K0
Android 学习JNI,用JAVA调用C
JNI(Java Native Interface)是java本地语言接口,也就是提供一种方法可以用JAVA调用底层语言(C/C++)。一般如果项目必须使用C语言操作底层的硬件,那就必须用到JNI技术。
DragonKingZhu
2022/05/08
6960
Android 学习JNI,用JAVA调用C
【Android NDK 开发】JNI 方法解析 ( C/C++ 调用 Java 方法 | 函数签名 | 调用对象方法 | 调用静态方法 )
调用 jclass GetObjectClass(jobject obj) 或 jclass FindClass(const char* name) 方法 , 获取 jclass 类型变量 ;
韩曙亮
2023/03/27
8.6K0
【Android NDK 开发】JNI 方法解析 ( C/C++ 调用 Java 方法 | 函数签名 | 调用对象方法 | 调用静态方法 )
android JNI调用机制
JNI的出现使得开发者既可以利用Java语言跨平台、类库丰 富、开发便捷等特点,又可以利用Native语言的高效。 JNI是JVM实现中的一部分,因此Native语言和Java代码都运行在JVM的
xiangzhihong
2018/02/01
1.8K0
android JNI调用机制
Android学习JNI,使用C调用JAVA语言
本节学习使用C语言调用JAVA语言。在生活中比如我们某些底层的硬件必须使用C语言去编写,当C语言返回的某些数值显示在界面上时,就比如使用JNI。这样可以将C返回的值显示在界面上。
DragonKingZhu
2022/05/08
4000
Android学习JNI,使用C调用JAVA语言
java调用JNI总结
工作中需要用到java调用DES加密解密算法进行通信加密、MAC计算等,原来直接有C语言版的DES算法库可以用,但是java用的不熟,java的DES算法库没用过,就想到把C语言的DES算法库编译成DLL,然后通过java的JNI调用。
杨永贞
2020/08/04
2.2K0
java调用JNI总结
Android JNI 调用时缓存字段和方法 ID
在 JNI 去调用 Java 的方法和访问字段时,最先要做的操作就是获得对应的类以及对应的方法 id。
音视频开发进阶
2019/07/26
1.1K0
Android的JNI【实战教程】3⃣️--Java调用C代码
看了上一篇: http://blog.csdn.net/github_33304260/article/details/62891083 我们应该已经可以构建NDK工程了 , 接下来让我们看看Java调用C代码:
先知先觉
2019/01/21
9790
【Android NDK 开发】JNI 方法解析 ( JNIEnv *env 参数 )
总结 : JNI 中定义的函数指针 , 实际都定义在 JNINativeInterface 结构体中 ;
韩曙亮
2023/03/27
9050
初学JNI java中调用c++的函数 helloworld实验
reference https://www.cnblogs.com/liuling/p/2013-12-20.html
平凡的学生族
2019/05/25
1.1K0
Android的JNI【实战教程】4⃣️--C调用Java代码
下一篇我们介绍一下AS 2.2 以上配置NDK —-纵享丝滑 http://blog.csdn.net/github_33304260/article/details/71404510
先知先觉
2019/01/21
6730
Android JNI 调用时的异常处理
可以看到异常的发生和处理基本都需要 Native 和 Java 交互,而对于 Native 自身出了异常,也就是 C/C++ 代码有问题,导致应用崩溃的又是另一回事了。
音视频开发进阶
2019/07/26
1.9K0
Android通过jni调用本地c/c++接口方法总结
网上这方面介绍的文章有很多,但都较凌乱或者不够系统,啰里啰唆一大堆前戏,不如实战来的快。长篇大论真没必要,我们只想上手用,先用起来再说,其他需要了再深入。为了做到通俗易懂和尽可能的简单,直接举例说明吧。举一个详细的例子从头到尾完整实现一遍,保证看一遍就会上手会用。
杨永贞
2022/11/21
2.5K0
Android通过jni调用本地c/c++接口方法总结
Windows端的java程序使用jni调用C++编写的库
Windows端的java程序使用jni调用C++编写的库,原来实现过在Android和Linux端通过JNI调用C++程序,在Windows端没有实现过,这里记录下几个关键的点;
呱牛笔记
2023/05/02
6350
Windows端的java程序使用jni调用C++编写的库
Android JNI学习(三)——Java与Native相互调用
前面两篇文章简单的介绍了JNI,下面我们就进一步了解下一下JNI的调用原则,要想了解JNI的调用原则, 前面我们说了JNI中的JNIEnv以及Java类型和native中的类型映射关系。下面我们先来看注册native函数
隔壁老李头
2018/08/30
2.6K0
Android JNI学习(三)——Java与Native相互调用
Android系统JNI使用(JAVA调用C语言接口)一
JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信主要是C/C++。
李小白是一只喵
2020/04/23
1.5K0
Android系统JNI使用(JAVA调用C语言接口)一
JNI使用过程记录,Java调用C++函数,JNI层使用和实例化Java对象
近期提供给JAVA应用使用的编解码协议库,需求就是编码的字符串,需要解码为Java对象;回应消息的Java对象,需要编码为指定格式的字符串,把模板代码总结下,主要涉及几个点:
呱牛笔记
2023/05/02
6070
JNI使用过程记录,Java调用C++函数,JNI层使用和实例化Java对象
点击加载更多

相似问题

JNI:从C++调用接受对象的方法

12

使用JNI从C++调用JAVA方法,没有参数

211

JNI从C++调用Java方法

11

JNI从Android调用C++方法

16

使用JNI从c++调用java方法

43
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文