意图与跨窗口传递消息
在安卓开发中,意图 主要用于执行某个系统动作(动机),例如:启动手机中安装的第三方、其它APP,或者在程序中启动一个后台服务。
意图的常用动作
ACTION_MAIN
-
常量值:
android.intent.action.MAIN
-
用途:应用的主入口点,通常用于启动应用的主界面。
ACTION_VIEW
-
常量值:
android.intent.action.VIEW
-
用途:根据 URI 显示数据,例如打开网页、查看图片等。
ACTION_SEND
-
常量值:
android.intent.action.SEND
-
用途:分享文本、图片等内容。
ACTION_DIAL
-
常量值:
android.intent.action.DIAL
-
用途:打开拨号界面并显示号码。
ACTION_IMAGE_CAPTURE
-
常量值:
android.media.action.IMAGE_CAPTURE
-
用途:启动相机应用拍照。
ACTION_PICK
-
常量值:
android.intent.action.PICK
-
用途:从内容提供者中选择数据,例如选择联系人、图片等。
ACTION_SEARCH
-
常量值:
android.intent.action.SEARCH
-
用途:执行搜索操作。
ACTION_BOOT_COMPLETED
-
常量值:
android.intent.action.BOOT_COMPLETED
-
用途:系统启动完成后发送广播。
ACTION_SETTINGS
-
常量值:
android.settings.SETTINGS
-
用途:打开系统设置界面。
在程序中使用意图
1.启动系统浏览器打开网页
事件 按钮1.被单击(来源对象 为 视图)
变量 意图1 = 创建 意图()
' 设置当前意图的具体动作,常用动作可参考官方文档
' 这里指定当前意图1的动作为:打开一个系统视图浏览网页
意图1.动作 = "android.intent.action.VIEW"
意图1.置数据("http://www.vcnstudio.com")
启动意图(意图1)
结束 事件
2.启动手机中安装的其它APP
事件 按钮2.被单击(来源对象 为 视图)
变量 意图1 = 创建 意图()
' 启动雷电模拟器中的谷歌浏览器
意图1.置自定义启动类("com.android.chrome","com.google.android.apps.chrome.Main")
启动意图(意图1)
结束 事件
3.调用系统分享内容
事件 按钮3.被单击(来源对象 为 视图)
变量 意图1 = 创建 意图()
意图1.取原生对象().setType("text/plain")
意图1.取原生对象().putExtra(android.content.Intent.EXTRA_TEXT, "具体要分享的内容")
取应用上下文().startActivity(android.content.Intent.createChooser(意图1.取原生对象(), "分享到"))
结束 事件
4.启动后台服务
详见安装包内自带安卓例程:后台服务例程
事件 按钮3.被单击(来源对象 为 视图)
变量 意图1 = 创建 意图()
' Ser2 为后台服务代码文件名称
意图1.置启动类("Ser2")
意图1.添加数据("city","成都")
意图1.添加数据("sw","off")
启动服务By意图(意图1)
结束 事件
跨窗口传递消息
在轻语言安卓程序中,跨窗口传递消息可以使用多种方式:
事件 按钮1.被单击(来源对象 为 视图)
保存对象("key1","数据值1")
保存设置("long-key2","持久化储存设置的数据值")
切换窗口(创建 窗口2())
结束 事件
事件 按钮2.被单击(来源对象 为 视图)
' 先创建一个局部的窗口对象
变量 局_窗口2 = 创建 窗口2()
' 窗口2 中自定义了一个变量;为其设置数据值
局_窗口2.数据值 = "主窗口按钮2被单击时设置的数据值"
' 再切换到窗口2中
切换窗口(局_窗口2)
结束 事件
事件 按钮3.被单击(来源对象 为 视图)
公用模块1.全局标记 = "公用模块数据:欢迎使用VcnStudio开发工具"
' 注意这里切换时重新创建的窗口对象
切换窗口(创建 窗口2())
结束 事件
事件 按钮4.被单击(来源对象 为 视图)
' 上面的方法在传递数据时都需要先设置数据再切换窗口
' 如果需要当切换到窗口2时,还可以实时或延时接收其它地方传递的数据则需要使用消息事件
延时执行(()->{
发送事件消息(1,"切换到窗口2后,等待2秒传递的数据值:123890")
},2000)
切换窗口(创建 窗口2())
结束 事件
接收数据:
' 由外部设置(通过本窗口对象)
变量 数据值 为 文本型
事件 窗口创建完毕()
' 读取从其它窗口传递过来的数据
标签1.追加文本行("key1:" + 读取对象("key1"))
标签1.追加文本行("long-key2:" + 读取设置("long-key2"))
' 接收延时传递的数据
接收事件消息((消息ID,消息值)->{
标签1.追加文本行("消息ID:" + 消息ID + ",消息值:" + 消息值)
})
结束 事件
事件 窗口切换完毕()
' 通过方式二传递的数据、只能在窗口切换完毕中获取
标签1.追加文本行("方式二:" + 数据值)
' 读取公用模块的值(建议在窗口切换完毕中读取)
标签1.追加文本行("方式三:" + 公用模块1.全局标记)
结束 事件