unia-app第三方app调用

一.uniapp开发的app打开第三方应用

uniapp开发的app打开第三方应用,如淘宝,京东,QQ或本地安装好的apk等,并传递相关参数。可以参考此篇,下面这个是我通过uniapp打开本地安装apk,打开前提是必须知道包名。

注意,此处的plus是5+Runtime的内部对象,所以普通浏览器是没有plus运行环境,普通浏览器运行plus api会输出plus is not defined错误,只能通过HBuilder真机运行,打包后或流应用环境下才能运行plus的api。

          // 打开第三方的app
			openApp() {
				 if (plus.os.name == 'Android') {
				// #ifdef APP-PLUS
				var appid = plus.runtime.appid;
				console.log('应用的 appid 为:' + appid);
				// #endif
					if (plus.runtime.isApplicationExist({
							pname: 'com.wetao.sign'
						})) {
						plus.runtime.launchApplication({
								pname: 'com.wetao.sign',
								extra: {
									imgurl: 'storage/emulated/0/DCIM/sign/a.png' //传递参数,extra必须是json格式
								}
							},
							function(e) {
								console.log('Open system default browser failed: ' + e.message);
								uni.showToast({
									title: "打开失败了",
									icon: none
								})
							});
					} else {
						uni.showToast({
							title: "apk未安装",
							icon: "none"
						})
					}
				} 
			},

参考文档:
https://www.jianshu.com/p/57f79fc83233
http://www.manongjc.com/article/113392.html
https://ext.dcloud.net.cn/plugin?id=2448
https://blog.csdn.net/qq285679784/article/details/107838560
https://blog.csdn.net/M_Eve/article/details/106623838
https://www.cnblogs.com/huzhuhua/p/13712415.html
http://www.html5plus.org/doc/zh_cn/runtime.html#plus.runtime.openURL

二.plus调用android原生页面
参考:http://www.bubuko.com/infodetail-3753674.html

			//打开第三方应用平台,plus调用Android原生页面
			openSign() {
				if (plus.os.name == 'Android') {
					if (plus.runtime.isApplicationExist({
							pname: 'com.wetao.sign'
						})) {
						/**
						 * 用setClassName()或者setComponent()来打开外部程序
						 * intent.setClassName(包名, 包名+activity名);
						 */
						 //获取当前的activity
						var main = plus.android.runtimeMainActivity();
						//获取java辅助类
						var Intent = plus.android.importClass('android.content.Intent');
						let ComponentName = plus.android.importClass('android.content.ComponentName');
						let intent = new Intent();
						intent.setComponent(new ComponentName('com.wetao.sign', "com.wetao.sign.core.MainActivity"))
						this.currentImg = new Date().getTime();
						//传递第三方平台参数
						intent.putExtra("imgurl", `/mnt/sdcard/sign/qianming/${this.currentImg}.png`);
						main.startActivityForResult(intent, 0);
					} else {
						uni.showToast({
							title: '本机未检测到未安装手写板'
						})
					}
				} else {
					uni.showToast({
						title: "只支持安卓系统",
						icon: none
					})
				}
			},

三.uniapp读取本地本地文件内容

IO模块管理本地文件系统,用于对文件系统的目录浏览、文件的读取、文件的写入等操作。通过plus.io可获取文件系统管理对象.参考:http://www.html5plus.org/doc/zh_cn/io.html

plus.io.resolveLocalFileSystemURL通过URL参数获取目录对象或文件对象,读取设备本地图片文件路径。

		onShow() {
			//图片文件名
			this.currentImg = new Date().getTime();
		 plus.io.resolveLocalFileSystemURL(`/mnt/sdcard/sign/qianming/${this.currentImg}.png`, (entry) => {
				//entry.toLocalURL获取文件路径转为本地路径
				let localImg = entry.toLocalURL();
				entry.file((file) => {
					var fileReader = new plus.io.FileReader();
					console.log("getFile:" + JSON.stringify(file));
					fileReader.readAsText(file, 'utf-8');
					fileReader.onloadend = function(evt) {
					 	console.log("11" + JSON.stringify(evt));
					 	// console.log("evt.target" + JSON.stringify(evt.target));
					 	// console.log(JSON.stringify(evt.target.result));
					 }
				})
			}, (e) => {
				console.log("Resolve file URL failed: " + e.message);
			})
		},

四、uni-app清空指定路径下文件夹及内容

			//清空图片的缓存

			clearPicture() {
				console.log('清空缓存')
				var self = this
				plus.io.resolveLocalFileSystemURL('/mnt/sdcard/sign/qianming/', function(entry) {
					entry.removeRecursively(function(entry) { //递归删除其下的所有文件及子目录  
						console.log("缓存清理完成");
					}, function(e) {
						console.log(e.message);
					});
					self.showCache();
				}, function(e) {

					console.log('文件路径读取失败-可能没文件', e);
				});

			},
			showCache() {
				plus.io.resolveLocalFileSystemURL('/mnt/sdcard/sign/qianming/', function(entry) { //通过URL参数获取目录对象或文件对象  
					var fileSize = 0;
					var directoryReader = entry.createReader();
					directoryReader.readEntries(function(entries) { //获取当前目录中的所有文件和子目录  
						for (var i = 0; i < entries.length; i++) {
							if (entries[i].isFile) {
								entries[i].file(function(file) {
									fileSize += (file.size * 0.0009766);
								}, function(e) {
									console.log(e.message);
								});
							} else {
								entries[i].getMetadata(function(metadata) {
									fileSize += (metadata.size * 0.0009766); //1字节=0.0009766kb  
								}, function() {
									console.log(e.message);
								});
							}
						}
					}, function(e) {
						console.log('文件读取失败');
					});
					retrun `${Math.ceil(fileSize)}kb`

				}, function(e) {
					console.log('文件路径读取失败');
				});
			},
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值