| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 | <template>	<view>		<page-head title="通过scheme打开三方app示例"></page-head>		<button class="button" @click="openBrowser('https://uniapp.dcloud.io/h5')">使用浏览器打开指定URL</button>		<button class="button" @click="openMarket()">使用应用商店打开指定App</button>		<button class="button" @click="openMarket('com.tencent.android.qqdownloader')">强制使用应用宝打开指定App</button>		<button class="button" @click="openTaobao('taobao://s.taobao.com/search?q=uni-app')">打开淘宝搜索页面</button>		<button class="button" @click="openMap()">打开地图并指定地点</button>		<view class="uni-divider">			<view class="uni-divider__content">打开QQ</view>			<view class="uni-divider__line"></view>		</view>		<view class="uni-padding-wrap">			<form @submit="openQQ">				<view>					<view class="uni-title">请输入聊天对象QQ号:</view>					<view class="uni-list">						<view class="uni-list-cell">							<input class="uni-input" name="qqNum" type="number"/>						</view>					</view>				</view>				<view>					<view class="uni-title">请选择QQ号类型:</view>					<radio-group class="uni-flex" name="qqNumType">						<label>							<radio value="wpa" checked=""/>普通QQ号</label>						<label>							<radio value="crm" />营销QQ号(无需加好友直接聊天)</label>					</radio-group>				</view>				<view class="uni-btn-v uni-common-mt">					<button class="button" formType="submit">打开qq并到指定聊天界面</button>				</view>			</form>		</view>	</view></template><script>export default {	data() {		return {					};	},	methods: {		openBrowser(url){			plus.runtime.openURL(url)		},		openMarket(marketPackageName) {			var appurl;			if (plus.os.name=="Android") {				appurl = "market://details?id=io.dcloud.hellouniapp";//可能部分应用商店没有收录			}			else{				appurl = "itms-apps://itunes.apple.com/cn/app/hello-uni-app/id1417078253";			}			if (typeof(marketPackageName)=="undefined") {				plus.runtime.openURL(appurl, function(res) {					console.log(res);				});			} else{//强制指定某个Android应用市场的包名,通过这个包名启动指定app				if (plus.os.name=="Android") {					plus.runtime.openURL(appurl, function(res) {						plus.nativeUI.alert("本机没有安装应用宝");					},marketPackageName);				} else{					plus.nativeUI.alert("仅Android手机才支持应用宝");				}			}		},		openTaobao(url){			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")						}					}				})			});		},		openMap(){			var url = "";			if (plus.os.name=="Android") {				var hasBaiduMap = plus.runtime.isApplicationExist({pname:'com.baidu.BaiduMap',action:'baidumap://'});				var hasAmap = plus.runtime.isApplicationExist({pname:'com.autonavi.minimap',action:'androidamap://'});				var urlBaiduMap = "baidumap://map/marker?location=39.968789,116.347247&title=DCloud&src=Hello%20uni-app";				var urlAmap = "androidamap://viewMap?sourceApplication=Hello%20uni-app&poiname=DCloud&lat=39.9631018208&lon=116.3406135236&dev=0"				if (hasAmap && hasBaiduMap) {					plus.nativeUI.actionSheet({title:"选择地图应用",cancel:"取消",buttons:[{title:"百度地图"},{title:"高德地图"}]}, function(e){						switch (e.index){							case 1:								plus.runtime.openURL(urlBaiduMap);								break;							case 2:								plus.runtime.openURL(urlAmap);								break;						}					})				}				else if (hasAmap) {					plus.runtime.openURL(urlAmap);				}				else if (hasBaiduMap) {					plus.runtime.openURL(urlBaiduMap);				}				else{					url = "geo:39.96310,116.340698?q=%e6%95%b0%e5%ad%97%e5%a4%a9%e5%a0%82";					plus.runtime.openURL(url); //如果是国外应用,应该优先使用这个,会启动google地图。这个接口不能统一坐标系,进入百度地图时会有偏差				}			} else{				// iOS上获取本机是否安装了百度高德地图,需要在manifest里配置,在manifest.json文件app-plus->distribute->apple->urlschemewhitelist节点下添加(如urlschemewhitelist:["iosamap","baidumap"])				plus.nativeUI.actionSheet({title:"选择地图应用",cancel:"取消",buttons:[{title:"Apple地图"},{title:"百度地图"},{title:"高德地图"}]}, function(e){					console.log("e.index: " + e.index);					switch (e.index){						case 1:							url = "http://maps.apple.com/?q=%e6%95%b0%e5%ad%97%e5%a4%a9%e5%a0%82&ll=39.96310,116.340698&spn=0.008766,0.019441";							break;						case 2:							url = "baidumap://map/marker?location=39.968789,116.347247&title=DCloud&src=Hello%20uni-app";							break;						case 3:							url = "iosamap://viewMap?sourceApplication=Hello%20uni-app&poiname=DCloud&lat=39.9631018208&lon=116.3406135236&dev=0";							break;						default:							break;					}					if (url!="") {						plus.runtime.openURL( url, function( e ) {							plus.nativeUI.alert("本机未安装指定的地图应用");						});					}				})			}		},		openQQ: function (e) {			// console.log("e.detail.value: " + JSON.stringify(e.detail.value));			// 没有校验qq号是否为空或合法数字,如果不是可用的qq号,启动qq后会停留在qq主界面			plus.runtime.openURL('mqqwpa://im/chat?chat_type=' + e.detail.value.qqNumType + '&uin=' + e.detail.value.qqNum,function (res) {				plus.nativeUI.alert("本机没有安装QQ,无法启动");			});		}	}};</script><style>.button {	margin: 30rpx;	color: #007AFF;}</style>
 |