Android中调用外部地图程序

来源:互联网 发布:disabled js移除 编辑:程序博客网 时间:2024/05/21 21:39

一、背景

       今天项目得完成一个功能,就是调用手机上第三方的APP进行导航~那真是坑了个爹了,其实我百度了下,然后说高德、百度的官网,特么有个URL的接入介绍,按照规范就可以接入,但是如果百度地图没安装会报 NoActivity.... 直接会导致程序挂掉,所以我按照百度到方法加上先判断是否安装:
/** 
 * 判断是否安装目标应用 
 * @param packageName 目标应用安装后的包名 
 * @return 是否已安装目标应用 
 */  
 privatebooleanisInstallByread(String packageName) {  
    returnnewFile("/data/data/"+ packageName).exists();  
 }
但是比较囧的是,限制了我打开第三方地图,我的本心是打算,手机上有啥就调用什么,终于,我各种百度找到了这么一个方法。

二、具体操作

<span style="font-size:18px;">Uri mUri = Uri.parse("geo:39.940409,116.355257?q=西直门");Intent mIntent = new Intent(Intent.ACTION_VIEW,mUri);startActivity(mIntent);</span>

        这段代码将会弹出一个对话框,显示所有在initer-filter中注册了geo-uri类型的程序,让用户进行选择,如果我们的程序也需要支持处理geo-uri,可以通过在AndroidMainfest文件中添加如下代码来实现:

<span style="font-size:18px;"><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></span>
        这么一搞的话,就很好,手机上有啥地图就呢个调用什么地图,但是如果手机上一个地图都没有,还是会报错,所以,捕获下这个错误,来个提示让先安装任意一种地图即可~
0 0
原创粉丝点击