一、判断应用是否安装
- 通过获取应用列表对比判断
/**
* 判断手机中 是否安装指定包名的app
*/
fun isInstallApk(context: Context, name:String):Boolean{
var packages = context.packageManager.getInstalledPackages(0)
for ( p in packages){
if (p.packageName.equals(name)) return true else continue
}
return false
}
- 可以通过获取某个应用信息并捕获未安装时的异常判断
fun isInstallApk(context: Context, name:String):Boolean{
var pInfo:PackageInfo? = null
try {
pInfo = packageManager.getPackageInfo(name,0)//com.baidu.BaiduMap
}catch (e:Exception){}
return if (null ==pInfo) false else true
}
(小提示:获取应用信息时,需要添加读取文件权限:android.permission.READ_EXTERNAL_STORAGE)
二、跳转第三方地图导航
- 百度地图导航
fun goBaiduNavigation(context: Context,lon: Double,lat: Double, cord_type:String = "gcj02"){
//bd09ll(百度经纬度坐标)
//bd09mc(百度墨卡托坐标)
//gcj02(经国测局加密的坐标)
//wgs84(gps获取的原始坐标)
if (isInstallApk(context,"com.baidu.BaiduMap")){
var url = "baidumap://map/direction?destination=${lat},${lon}&coord_type=${cord_type}&mode=walking&src=com.zlqf.patrol4"
var i1 = Intent()
i1.setData(Uri.parse(url))
context.startActivity(i1)
}else{
context.toast("请先安装百度地图")
}
}
百度地图官网参考链接: lbsyun.baidu.com/index.php?t…
- 高德地图导航
fun goNavigation(context: Context,lon:Double,lat:Double){
if (isInstallApk(context,"com.autonavi.minimap")){
context.startActivity(Intent().apply {
setAction("android.intent.action.VIEW")
var url = "amapuri://route/plan/?dlat=${lat}&dlon=${lon}&dev=0&t=0"
setData(Uri.parse(url))
})
}else{
context.toast("请先安装高德地图")
}
}
高德地图官网参考链接:lbs.amap.com/api/amap-mo…
提示:官网链接中放了更为详细的参数说明。