QtAndroid详解 2 startActivity和它的小伙伴们

本文详细探讨了QtAndroid中的startActivity方法,包括其功能和Android中的Activity、Intent概念。通过startActivity可以启动新的Activity,可以分为不关注结果的调用和关注结果的调用,后者涉及QAndroidActivityResultReceiver和onActivityResult方法。此外,文章还介绍了Intent在Android组件通信中的重要角色。
摘要由CSDN通过智能技术生成
               

    上一篇,“QtAndroid详解(1):QAndroidJniObject”,我们做了好多好多准备工作,目的就是为使用 QtAndroid 名字空间里的 startActivity() 方法调用 Android 系统功能奠定基础。那这次呢,我们就要来研究如何使用 startActivity 方法了。

    在我的书《Qt on Android核心编程》中,讲解 JNI ,介绍如何使用 JNI 扩展 Qt 应用时,是通过重写 QtActivity ,为我们的 Activity 加入静态方法来实现的,实际上从 Qt 5.3.0 以后,有更方便的方法,那就是接下来要介绍的 startActivity 了。

    startActivity ,方法名字已经道出了它的功能:启动一个活动(Activity)。简单的说,在 Android 里,Activity就是布满整个窗口或者悬浮于其他窗口上的交互界面。通常用户可见的功能,都是与 Activity 关联的,比如我们用微信、微博、美团,我们看到的那些界面,可操作的东东,都是与 Activity 息息相关的。

    行,背景就这么多吧,要是感兴趣,可以问下度娘,或者到 https://developer.android.com/index.html 上看看 Android 的在线文档。不过貌似打不开哈……

    我们先详细介绍一下 startActivity 方法,然后再举例来看使用 startActivity 调用一个活动的两种情况。

startActivity方法详解

    startActivity 方法原型如下:

void startActivity(const QAndroidJniObject & intent, int receiverRequestCode, QAndroidActivityResultReceiver * resultReceiver = 0);

    如你所见,startActivity 有三个参数。

    第一个是 intent ,我们在“QtAndroid详解(1):QAndroidJniObject”中举例时已经介绍了 Android 提供的 Intent 类,这里的 intent 参数实际上就是一个 Java Intent 对象。

    第二个参数是 receiverRequestCode ,实际上是一个标识符,用来标记一次 startActivity 调用,当你启动一个 Activity 时,这个 request code 会传递过去,当你调用的 Activity 结束时,你会得到一个通知,这个通知里又把你传的 request code 带回给你,同时呢,这个通知还带回来你调用的那个 Activity 执行的结果,叫作 result code 。更厉害的是,你调用的 Activity ,还可以传递更多的数据回来,而这些数据呢,又是通过一个 Intent 携带的。

    为了处理你调起的 Activity 的返回结果,在 Qt 代码中,我们需要一个 QAndroidActivityResultReceiver 对象,这就是第三个参数了。

    实际上࿰

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值