android用Intent隐式意图调起(百度,谷歌,高德地图)

本文介绍了如何在Android应用中使用隐式Intent调起百度、谷歌和高德地图,内容包括所需的权限配置、布局文件设置及Activity类中的实现方法。

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


1.权限

<uses-permission
    android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission
android:name="android.permission.INTERNET"/><uses-permission
android:name="com.android.launcher.permission.READ_SETTINGS"
/><uses-permission
android:name="android.permission.WAKE_LOCK"/><uses-permission
android:name="android.permission.CHANGE_WIFI_STATE"
/><uses-permission
android:name="android.permission.ACCESS_WIFI_STATE"
/><uses-permission
android:name="android.permission.GET_TASKS"
/><uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission
android:name="android.permission.WRITE_SETTINGS"
/>

2.布局中

<Button
    android:id="@+id/button_gao"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="调起高德地图" />
<Button
    android:id="@+id/button_bai"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="调起百度地图" />
<Button
    android:id="@+id/button_gu"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="调起谷歌地图" />

3.activity类中

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Intent intent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    private void initView() {
        Button button_bai = (Button) findViewById(R.id.button_bai);
        Button button_gao = (Button) findViewById(R.id.button_gao);
        Button button_gu = (Button) findViewById(R.id.button_gu);
        button_bai.setOnClickListener(this);
        button_gao.setOnClickListener(this);
        button_gu.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.button_bai:
                if(isAvilible(MainActivity.this,"com.baidu.BaiduMap")){//传入指定应用包名

                    try {
//                          intent = Intent.getIntent("intent://map/direction?origin=latlng:34.264642646862,108.95108518068|name:我家&destination=大雁塔&mode=driving®ion=西安&src=yourCompanyName|yourAppName#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end");
                        //"origin=latlng:"+"34.264642646862,108.95108518068&" +   //起点  此处不传值默认选择当前位置
//终点
//导航路线方式
//
                        intent = Intent.getIntent("intent://map/direction?" +
                                 //"origin=latlng:"+"34.264642646862,108.95108518068&" +   //起点  此处不传值默认选择当前位置
                                 "destination=latlng:"+34.264642646862+","+108.95108518068+"|name:我的目的地"+        //终点
                                 "&mode=driving&" +          //导航路线方式
                                 "region=北京" +           //
                                 "&src=慧医#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end");
                     startActivity(intent); //启动调用
                    } catch (URISyntaxException e) {
                        Log.e("intent", e.getMessage());
                    }
                }else{//未安装
                    //market为路径,id为包名
                    //显示手机上所有的market商店
                    Toast.makeText(MainActivity.this, "您尚未安装百度地图", Toast.LENGTH_LONG).show();
                    Uri uri = Uri.parse("market://details?id=com.baidu.BaiduMap");
                    intent = new Intent(Intent.ACTION_VIEW, uri);
                   startActivity(intent);
                }
                break;
            case R.id.button_gao:
                if (isAvilible(MainActivity.this, "com.autonavi.minimap")) {
                    try{
                        intent = Intent.getIntent("androidamap://navi?sourceApplication=慧医&poiname=我的目的地&lat="+34.264642646862+"&lon="+108.95108518068+"&dev=0");
                       startActivity(intent);
                    } catch (URISyntaxException e)
                    {e.printStackTrace(); }
                }else{
                    Toast.makeText(MainActivity.this, "您尚未安装高德地图", Toast.LENGTH_LONG).show();
                    Uri uri = Uri.parse("market://details?id=com.autonavi.minimap");
                    intent = new Intent(Intent.ACTION_VIEW, uri);
                    startActivity(intent);
                }
                break;
            case R.id.button_gu:
                if (isAvilible(MainActivity.this,"com.google.android.apps.maps")) {
                    Uri gmmIntentUri = Uri.parse("google.navigation:q="+34.264642646862+","+108.95108518068 +", + Sydney +Australia");
                    Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
                    mapIntent.setPackage("com.google.android.apps.maps");
                   startActivity(mapIntent);
                }else {
                    Toast.makeText(MainActivity.this, "您尚未安装谷歌地图", Toast.LENGTH_LONG).show();

                    Uri uri = Uri.parse("market://details?id=com.google.android.apps.maps");
                    intent = new Intent(Intent.ACTION_VIEW, uri);
                    startActivity(intent);  }
                break;
        }
    }
  /*  * 检查手机上是否安装了指定的软件
    * @param context
    * @param packageName:应用包名
    * @return
            */
    public static boolean isAvilible(Context context, String packageName){
        //获取packagemanager
        final PackageManager packageManager = context.getPackageManager();
        //获取所有已安装程序的包信息
        List<PackageInfo> packageInfos = packageManager.getInstalledPackages(0);
        //用于存储所有已安装程序的包名
        List<String> packageNames = new ArrayList<String>();
        //从pinfo中将包名字逐一取出,压入pName list中
        if(packageInfos != null){
            for(int i = 0; i < packageInfos.size(); i++){
                String packName = packageInfos.get(i).packageName;
                packageNames.add(packName);
            }
        }
        //判断packageNames中是否有目标程序的包名,有TRUE,没有FALSE
        return packageNames.contains(packageName);
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值