关于Android自己应用跳转地图APP

本文介绍如何在Android应用中实现跳转到Google Map、百度地图、高德地图或腾讯地图并进行定点搜索。文章提供了相关资料链接,包括两种检查手机是否已安装地图APP的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现在主流的地图应用APP有 Google Map,百度地图,高德地图,腾讯地图等系列地图APP,由于现在要实现自己应用中跳地图APP进行定点搜索某位置,网上进行搜索一些资料很少,要么去这些地图官方网站进行集成,在这里分享一个万能自己APP跳转地图APP并进行搜索某个地方,这个也是网上搜到别人的资料看到的

Intent intent=new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("geo:0,0?q=自己要查询的地点"));
mContext.startActivity(intent);
//(猜测参数的意思)geo代表 地图探测 0,0代表经纬度 q 代表query 查询的意思 (这个参数只是猜测)

这个测试过可以跳转的APP有Google地图,高德地图,百度地图,腾讯地图,其他没测试过,如果手机没有装过这些应用需要检查手机是否装过
有两种检查方式:

1
private boolean isInstallMap(String packageName) {
    return new File("/data/data/" + packageName).exists();
}
2
public static boolean isAppInstall(Context context,String appName) {
        PackageInfo packageInfo = null ;
        try {
            packageInfo = context.getPackageManager().getPackageInfo(appName, 0);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        return packageInfo==null?false:true;
    }
如果我们的程序也需要支持处理geo-uri,可以通过在AndroidMainfest文件中添加如下代码来实现:

<intent-filter android:priority="0" >
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
      <category android:name="android.intent.category.BROWSABLE" />
      <data android:scheme="geo" />
</intent-filter>
//基于地址的地图点
Uri location = Uri.parse("geo:0,0?q=1600+Amphitheatre+Parkway,+Mountain+View,+California");
//基于图的点或纬度/经度.位置= 。
Uri.parse("geo:37.422219,-122.08364?q=搜索地点&z=14"); // z 是一个缩放参数水平 取值范围1~20
Uri.parse("geo:37.422219,-122.08364?z=14"); 
Intent mapIntent = new Intent(Intent.ACTION_VIEW, location);

http://blog.youkuaiyun.com/gf771115/article/details/7722456/
http://blog.youkuaiyun.com/aaren_jiang/article/details/8842774

### 实现跳转至百度地图应用程序 为了实现在 Android 应用程序中通过 `Intent` 跳转至百度地图 APP 的功能,可以采用如下方式构建并发送 `Intent`: ```java // 构建意图对象用于启动导航服务 Intent intent = new Intent(Intent.ACTION_VIEW); String destinationLatlng = "latlng:" + latitude + "," + longitude; String originLatLng = "origin=latlng:" + currentLatitude + "," + currentLongitude; Uri uri = Uri.parse("intent://map/direction?" + originLatLng + "|name:起点名称" + "&destination=" + destinationLatlng + "&mode=driving" + "®ion=目标城市名" + "&src=您的公司名|您的应用名#Intent;" + "scheme=bdapp;" + "package=com.baidu.BaiduMap;" + "end"); intent.setData(uri); try { context.startActivity(intent); } catch (Exception e) { Toast.makeText(context, "未安装百度地图", Toast.LENGTH_SHORT).show(); } ``` 上述代码片段展示了如何创建一个带有特定参数的 URI 并将其设置给 `Intent` 对象来发起请求[^2]。 另外,在尝试启动活动之前应该先验证设备上是否存在可用的目标应用程序。这可以通过调用自定义方法 `isAvilible()` 来完成,该函数接收上下文以及要检查的应用包名作为参数[^5]。 如果检测到用户已安装了百度地图,则会正常打开;反之则提示用户尚未安装此软件。 #### 验证百度地图是否已安装的方法 ```java private boolean isBaiduMapInstalled(Context context){ final PackageManager packageManager = context.getPackageManager(); List<PackageInfo> pinfo = packageManager.getInstalledPackages(0); for(PackageInfo info : pinfo){ if(info.packageName.equals("com.baidu.BaiduMap")){ return true; } } return false; } ``` 这种方法能够有效地判断当前环境中是否有指定的地图客户端存在,并据此调整用户体验逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值