赞
踩
百度地图包名:com.baidu.BaiduMap
高德地图包名:com.autonavi.minimap
腾讯地图包名:com.tencent.map
- public static boolean isPackageInstalled(String packageName) {
- return new File("/data/data/" + packageName).exists();
- }
- public static boolean isPackageInstalled(Context mContext, String packagename) {
- PackageInfo packageInfo = null;
- try {
- packageInfo = mContext.getPackageManager().getPackageInfo(packagename, 0);
- } catch (PackageManager.NameNotFoundException e) {
- packageInfo = null;
- e.printStackTrace();
- } finally {
- return packageInfo == null ? false : true;
- }
- }
这里要着重说一下这个方法,网上这个方法有很多,但一般都是在这个finally的位置进行if-else判断,判断packageName是否为null。但是我用起来不太顺手,不知道为什么没有人说过这个问题。
一旦程序出现异常,进入了catch语句,那之后的if判断是没有作用的。
- if (packageInfo == null) {
- return false;
- } else { // 如果进入了catch,无论packageInfo是否为null,程序都会走else条件句
- return true;
- }
这里提供各平台相关的地址,具体搜索:【平台名】+URI API,就可以找到想要的结果。
高德:http://lbs.amap.com/api/amap-mobile/guide/android/route
百度:http://lbsyun.baidu.com/index.php?title=uri/api/android
腾讯:http://lbs.qq.com/uri_v1/guide-route.html
各个平台基本上都有对应的Uri地址以及对应的调用示例,依样画葫芦基本上都可以实现。
- // 百度地图
- Intent naviIntent = new Intent("android.intent.action.VIEW", android.net.Uri.parse("baidumap://map/geocoder?location=" + mEndPoint.getLatitude() + "," + mEndPoint.getLongitude()));
- mContext.startActivity(naviIntent);
- // 高德地图
- naviIntent = new Intent("android.intent.action.VIEW", android.net.Uri.parse("androidamap://route?sourceApplication=appName&slat=&slon=&sname=我的位置&dlat="+ mEndPoint.getLatitude() +"&dlon="+ mEndPoint.getLongitude()+"&dname=目的地&dev=0&t=2"));
- mContext.startActivity(naviIntent);
- // 腾讯地图
- naviIntent = new Intent("android.intent.action.VIEW", android.net.Uri.parse("qqmap://map/routeplan?type=drive&from=&fromcoord=&to=目的地&tocoord=" + mEndPoint.getLatitude() + "," + mEndPoint.getLongitude() + "&policy=0&referer=appName"));
- mContext.startActivity(naviIntent);
具体方法名决定着跳转的页面,比如上面高德和腾讯方法为routeplan,线路规划,跳转的都是导航方式选择页面;而百度为geocoder,跳转的是目的地位置详情页面。
都是常用的一些功能,就不放图啦~就酱。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。