Qt on Android 调用安卓原生方法
标题c++与java混合编程
1.先用安卓编译器编译一次,在android-build目录下找到AndroidManifest.xml。
2.在项目路径下创建 android/src/ 目录
3.将AndroidManifest.xml拷贝到 android/src下
4.在android/src下创建com 目录,并手动写一个QtAndroidTest.java 文件到com 目录
5.将上面两个文件添加的QT工程中,并在pro文件中添加ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android
6.将AndroidManifest.xml用普通文本编辑器打开,将 activity 下面的
android:name=“com.QtAndroidTest.QtAndroidTest” 修改成这样
工程项目截图:
调用:以调用安卓Toast 为例
此时:
QtAndroidTest.java文件内容为:
package com.QtAndroidTest;
import android.content.Intent;
import android.widget.Toast;
import android.os.Handler;
import android.os.Message;
import org.qtproject.qt5.android.bindings.QtActivity;public class QtAndroidTest extends org.qtproject.qt5.android.bindings.QtActivity
{private static QtAndroidTest m_instance;private static Handler m_handler = new Handler() {@Overridepublic void handleMessage(Message msg) {switch (msg.what) {case 1:Toast toast = Toast.makeText(m_instance,(String)msg.obj, Toast.LENGTH_SHORT);toast.show();break;};}};public QtAndroidTest(){m_instance = this;}public static void makeToast(String s){m_handler.sendMessage(m_handler.obtainMessage(1, s));}
}
在QT中调用:
在头文件中包含
#ifdef Q_OS_ANDROID
#include<QAndroidJniObject>
#include<QAndroidJniEnvironment>
#endif
// 在cpp 文件中调用QAndroidJniObject javaToast = QAndroidJniObject::fromString("QT调用Android原生Toast");QAndroidJniObject::callStaticMethod<void>("com/QtAndroidTest/QtAndroidTest","makeToast","(Ljava/lang/String;)V",javaToast.object<jstring>());
Qt on Android 调用安卓原生方法相关推荐
- html5调用原生android,h5调用IOS/安卓原生方法,原生调h5方法
之前也总结过h5调用原生的方法,但是写的不全.像调完原生之后,原生往往会有返回值,或者根据返回值的不同回调h5的方法. 1.判断机型 getType() { var u = navigator.use ...
- React Native实现js调用安卓原生代码
1 问题 实现js调用安卓原始代码,直接上代码,简单粗暴 2 代码实现 1) 实现一个继承ReactContextBaseJavaModule的类,MyToastModule.java文件如下 pub ...
- h5调用安卓原生相机、相册、电话、录像,且兼容安卓系统8.0
前言 安卓原生组件webview加载h5的URL,若要h5调用安卓原生相机和相册有效需要做以下操作. 测试机:魅蓝note2 系统5.1.1 华为荣耀畅玩7x 系统8.0.0 一.h5页面相关 方 ...
- Android调用JNI本地方法跟踪目标代码
正如Android调用JNI本地方法经过有点改变章所说跟踪代码是可行的,但是跟踪某些代码会出现anr,点击取消,还是不好运,有提高办法吗?回答是有(gdb还没试过,本文只讨论ida). 下面是我使用 ...
- Qt for Android 调用android原生接口分享图片或文字
在用Qt开发android应用的时候,有一个需求是通过调用android原生接口去实现图片分享功能,原理很简单,首先在java文件中用android接口封装一个分享功能的方法,然后在C++中调用QAn ...
- Qt for Android调用原生接口打开相机拍照并存储照片
Qt开发Android应用,需求是通过调用Android原生接口去打开系统相机拍照,并返回拍摄的照片.原理很简单,现在Java文件中写android代码调用相机,拍照后将将相片存储在SD卡,然后在C+ ...
- Qt for Android调用android原生控件安装apk
Qt开发Android应用,做软件升级的时候,需要调用android借口安装程序, 首先在java文件中用android接口封装一个分享功能的方法,然后在C++中调用 QAndroidJniObjec ...
- Qt for Android调用android原生Toast控件
用Qt开发Android应用,有时候会想着直接调用android原生的一些组件或者打开某些android的系统界面,比如调用Toast显示消息提醒.打开android系统设置页面.这里主要讲解如何通过 ...
- webview调用ios或者安卓的方法(内嵌h5页面调用app原生方法)
1.配合使用调用app原生的方法(h5页面不需要回调和数据) 实例1 //通知客户端,token失效 callTokenLostToApp(){let boswer=vm.config.getBrow ...
最新文章
- JS 中settimeout和setinterval函数的区别
- 请妥善保管自己的QQ等网络帐号
- 北大95后「AI萝莉」回来了,一次中8篇顶会论文的她,现在达摩院开源7大NLP模型...
- 存储过程和SQL语句比较【转】
- sql怎么修改服务器角色,sql角色服务器的设置
- 转]最长递增子序列问题的求解
- js的if(!myFunction())有何用
- 孙玄:人工智能时代,你需要掌握的经典大规模文本相似识别架构和算法
- 小白功能测试项目实战篇01-dtsshop开源商城项目之【会员管理】模块测试点分析
- live share_带Live Share的Visual Studio Code中的实时编码入门
- powerbi导入地图_PowerBI地图可视化的那些套路
- 解决windows10下总是很快自动黑屏进入睡眠问题
- c# dataset 和DataGridView的绑定详细
- 计算机无法备份,win7不能备份系统如何解决?win7不能备份系统的解决方法
- 更改公众号名称对用户关注的影响
- 37互娱,2019秋招提前批,Java服务端一面
- unity制作法线贴图
- 集线器、交换机、网桥和路由器如何隔离广播域和冲突域
- 五天面试五家硅谷顶尖公司并拿到五个Offer
- 小程序 报错之 thirdScriptError ..... is not a function 的解决方法