uniapp 与原生android 的交互

这篇具有很好参考价值的文章主要介绍了uniapp 与原生android 的交互。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

uniapp打开第三方程序可以通过 HTML5+ API 的 runtime API 和 importClass 反射获取Android的Intent对象来实现,有两种方式,先说最简单的。

第一种 runtime:

handleGoApp() {
	// #ifdef APP-PLUS
	// 判断平台
	if (plus.os.name === "Android") {
		plus.runtime.launchApplication(
			{
                // 包名
				pname: "com.xxxx.xxxx",
                // 传参数
				extra: {
                          "name": "jack",
                          "password": "xxxx"
				}
			},
			e => {
				uni.showToast({
					title: "打开失败",
					icon: "none"
				});
				console.log("runtime error ==", e);
			}
		);
	} 
    else if (plus.os.name === "iOS") {
		plus.runtime.launchApplication({ action: "com.xxx.xxx" }, function(e) {
			uni.showToast({
				title: "打开失败",
				icon: "none"
			});
			console.log("Open system default browser failed: " + e.message);
		});
	}
	// #endif
},

通过 runtime 可以跳转第三方程序,但是要指定的页面需要通过 runtime.openUrl 传入URLsheme地址

<button class="button" @click="openURL('taobao://s.taobao.com/search?q=javaScript')">
			打开淘宝搜索页面
</button>


openURL(url) {
	// #ifdef APP-PLUS
	plus.runtime.openURL(url, function(res) {
		uni.showModal({
			content: "本机未检测到淘宝客户端,是否打开浏览器访问淘宝?",
			success: function(res) {
				if (res.confirm) {
					plus.runtime.openURL("https://s.taobao.com/search?q=uni-app");
				}
			}
		});
	});
	// #endif
},

第二种方式 使用Android API:

目前有个需求,需要和android进行交互并传参数过去然后进行某种需要(跳转页面、处理逻辑...),那么使用runtime API远远不够,有可能你传的参数android没有接收到。

android是通过intent来进行交互的,所以就需要使用android的api来 编码。

handleAndroidGoApp(){
	// 获取宿主上下文
	var main = plus .android.runtimeMainActivity();
	// 通过反射获取Android的Intent对象
	var Intent = plus.android.importClass("android.content.Intent");  
	// 通过宿主上下文创建 intent
	var intent =new Intent(Intent.ACTION_VIEW); // 设置要开启的Activitv包类路径
    // intent.setClassName(包名, 包名+activity名(包类名));
	intent.setClassName("com.android.**.**","com.android.**.**.**")

	// 开启新的任务栈(跨进程)
	// intent.setFlags(Intent.FLAG ACTIVITY NEW TASK) ;
	// uni向android原生界面传值
	intent.putExtra("name","jack");
    intent.putExtra("password","xxxx");
			
	// 请求码保证了,开始的新界面和返回的是同一个操作
	var CODE_REQUEST= 0;
	// 采用startActivityForResult开启新的界面,当界面关闭时可以处理返回结果,CODE REQUEST请求码是唯一标识
	main.startActivityForResult(intent,CODE_REQUEST);
	// 设置原生界面返回后的回调操作
	main.onActivityResult = function(requestCode, resultCode, data){
		console.log("onActivityResult ===",requestCode, resultCode, data);
	}

},

补充:

Android之Intent的setClassName、setComponent的区别

setClassName:跳转到不同Applicaiton的activity或者service
setComponent:setClassName内部也是调用的setComponent。

打开外部应用:intent.setClassName(包名, 包名+activity名);

public void onClick(View v)
    Intent intent = new Intent();

    intent.setClassName("com.test.hello",  "com.test.hello.AAA");
    或者
    intent.setComponent(new ComponentName("com.test.hello","com.test.hello.AAA"));

    startActivity(intent);
}

Android之Intent和runtime跳转方式

具体的跳转原理我也不是很清楚,只说下结果把。

intent 通过 main.startActivityForResult(intent,CODE_REQUEST); 跳转是并没打开另一个app,只是把当前页面切换成你需要跳转的页面。

而 runtime 是真正的打开另一个app程序。文章来源地址https://www.toymoban.com/news/detail-631628.html

到了这里,关于uniapp 与原生android 的交互的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uni-app通过wifi连接设备并进行命令交互

    前段时间公司让做一个通过手机连接硬件设备上的wifi,实现手机app和硬件设备的数据通讯。当时做的时候查相关资料比较少,担心以后遇到相似需求忘记具体细节,在这写一下记录一下。 一、具体情况 1. 手机连接设备wifi功能没有通过app重新开发,需要手动连接wifi。 2. 采用

    2024年02月12日
    浏览(62)
  • 【UniApp】-uni-app-网络请求

    经过上个章节的介绍,大家可以了解到 uni-app-pinia存储数据的基本使用方法 那本章节来给大家介绍一下 uni-app-网络请求 的基本使用方法 首先我们打开官方文档,我先带着大家看一下官方文档的介绍:https://uniapp.dcloud.net.cn/api/request/request.html 从官方文档中我们可以看到,可以

    2024年02月04日
    浏览(53)
  • uni-app嵌入微信小程序原生代码

    使用uni-app有时需要用到微信小程序原生代码 解析: uni-app项目结构跟原生小程序的项目结构有着不一致的区别,如果说开发过程中必须要使用原生代码,就需要把原生代码作为组件的方式在uni-app项目中引入使用 官网为了应对这一个需求,就给出了以下方法,供开发者实现 wxcompone

    2024年02月05日
    浏览(71)
  • 微信小程序修改原生组件样式(uni-app)

    微信小程序修改原生组件样式 全局修改,直接将修改的样式写在全局的样式文件中; 特殊情况:修改swiper指示点样式时,需要包裹在swiper的样式选择器下才生效。 直接将下列代码放在全局样式中是不会生效的,需要加上swiper组件的元素选择器或swiper组件的其他样式名也可。

    2024年02月05日
    浏览(76)
  • 【UniApp】-uni-app-打包成网页

    经过上一篇文章的介绍,已经将这个计算器的计算功能实现了,接下来就是我们项目当中的一个发包上线阶段,我模拟一下,目的就是为了给大家介绍一下,uni-app是如何打包成网页的。 除了可以打包成网页,uni-app还可以打包成小程序、App、H5、快应用等等,后面在单独开文

    2024年02月04日
    浏览(72)
  • 解决uni-app小程序原生tabbar 添加阴影问题

    下面是实现的效果  步骤1 创建一个组件  文件名和组件名要一致  步骤2  在组件中实现阴影效果 步骤3 在tabbar 页面使用  直接使用 即可 不用引入  

    2024年02月07日
    浏览(64)
  • Uniapp uni-app学习与快速上手

    个人开源uni-app开源项目地址:准备中 在线展示项目地址:准备中 什么是uni-app uni,读 you ni ,是统一的意思。 Dcloud即数字天堂(北京)网络技术有限公司是W3C成员及HTML5中国产业联盟发起单位,致力于推进HTML5发展构建,HTML5生态。 2012年,DCloud开始研发小程序技术,优化webvie

    2024年02月09日
    浏览(64)
  • 基于uni-app的WiFi设备连接和命令交互——硬件开发指南

    在本篇文章中,我们将介绍如何使用uni-app框架实现通过WiFi连接设备并进行命令交互的硬件开发。为了方便理解和实践,我们将提供相应的源代码示例。 硬件准备 在开始之前,确保你已经准备好以下硬件设备: 一个支持WiFi连接的设备(如ESP8266或ESP32等)。 一个手机或电脑作

    2024年02月05日
    浏览(225)
  • 微信小程序原生框架转Uni-App:你需要知道的一切

    博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客👦🏻 《java 面试题大全》 🍩惟余辈才疏学浅,临摹之作或有不妥之处,还请读者海涵指正。☕🍭 《MYSQL从入门到精通》数据库是开发者必会基础之一~ 🪁 吾期望此文有资助于尔,即使粗浅难及深广,亦备添少许微薄

    2024年02月09日
    浏览(61)
  • 在uni-app中使用sku插件,实现商品详情页规格展示和交互。

    学会使用插件市场,下载并使用 SKU 组件,实现 商品详情页 规格展示和交互。 SKU 概念 存货单位(Stock Keeping Unit),库存管理的最小可用单元,通常称为“单品”。 SKU 常见于电商领域,对于前端工程师而言,更多关注 SKU 算法 和 用户交互体验 。 uni-app 插件市场,是 uni-ap

    2024年01月19日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包