Qt for Android调用android原生Toast控件

来源:互联网 发布:php cookie自动登录 编辑:程序博客网 时间:2024/06/01 08:24

用Qt开发Android应用,有时候会想着直接调用android原生的一些组件或者打开某些android的系统界面,比如调用Toast显示消息提醒、打开android系统设置页面。这里主要讲解如何通过Qt调用android原生的Toast来显示消息提醒。

首先,如果是一个新创建的Qt工程,需要创建一个AndroidManifest.xml文件,创建过程不再赘述,然后创建一个java的类,继承于

public class MainActivity extends org.qtproject.qt5.android.bindings.QtActivity

调用Toast 需要用到Handler,要不然无法调用

private static Handler   mHandler;

接着看代码

private static Handler m_handler = new Handler() {        @Override        public void handleMessage(Message msg) {            switch (msg.what) {            case 1:                Toast toast = Toast.makeText(m_instance,(String)msg.obj, Toast.LENGTH_SHORT);                toast.show();                break;            };        }    };


然后定义一个静态函数 供Qt调用

public static void makeToast(String s){        m_handler.sendMessage(m_handler.obtainMessage(1, s));    }


OK,这时候Qt就可以通过makeToast函数来调用Toast控件显示相应的消息了,调用方式如下:

QAndroidJniObject javaToast = QAndroidJniObject::fromString(text);QAndroidJniObject::callStaticMethod<void>("com/lyy/test/MainActivity",                                       "makeToast",                                       "(Ljava/lang/String;)V",                                        javaToast.object<jstring>());


其中 text就是要显示的内容,com/lyy/test/MainActivity是java类的包路径。

0 0
原创粉丝点击