Android应用点击按钮调用谷歌地图叫车,能否设置Go-Jek及车型为默认?
关于Android中唤起Go-Jek默认叫车及指定车型的解决方案
嘿,我来帮你梳理下这个问题的可行方案:
一、能不能把Go-Jek设为默认叫车服务?
你当前用的是谷歌地图的Intent链接,这种方式是打开谷歌地图自身的叫车界面,没法直接强制指定Go-Jek作为默认服务(谷歌地图会列出当地可用的叫车服务商,用户得手动选择)。
如果想直接唤起Go-Jek的叫车功能,最优方案是使用Go-Jek官方提供的Deep Link或显式Intent,这样可以跳过谷歌地图,直接打开Go-Jek应用进入叫车流程。
二、能不能默认指定轿车或摩托车车型?
可以的!Go-Jek的Deep Link支持传入车型参数,直接指定要唤起的服务类型。不过不同地区的车型参数可能略有差异,下面是常见的参数值和代码示例:
完整代码示例
首先,先检查设备上是否安装了Go-Jek应用:
private boolean isGoJekAppInstalled() { PackageManager packageManager = getPackageManager(); try { // Go-Jek的官方包名是com.gojek.app packageManager.getPackageInfo("com.gojek.app", PackageManager.GET_ACTIVITIES); return true; } catch (PackageManager.NameNotFoundException e) { return false; } }
然后,构造唤起Go-Jek并指定车型的Intent:
if (isGoJekAppInstalled()) { // 构造Deep Link参数:dlat/dlng是目的地坐标,service指定车型 // 摩托车车型参数:gojek:bike // 轿车车型参数:gojek:go-car String goJekDeepLink = "gojek://pickup?dlat=" + mLocation.latitude + "&dlng=" + mLocation.longitude + "&service=gojek:bike"; Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(goJekDeepLink)); // 显式指定包名,确保只会唤起Go-Jek应用,不会弹出选择框 intent.setPackage("com.gojek.app"); startActivity(intent); } else { // 如果未安装Go-Jek,提示用户下载或 fallback 到原有的谷歌地图方案 Toast.makeText(this, "请先安装Go-Jek应用哦", Toast.LENGTH_SHORT).show(); }
参数说明
service=gojek:bike:唤起摩托车叫车服务service=gojek:go-car:唤起普通轿车叫车服务
如果需要其他车型(比如商务车),可以根据当地Go-Jek的服务调整参数值。
补充说明
如果你还是想保留通过谷歌地图唤起叫车的方式,那目前没办法默认指定Go-Jek,用户需要在谷歌地图的叫车列表里手动选择Go-Jek服务,也没法直接指定车型——这种情况下,直接唤起Go-Jek应用的体验会更符合你的需求。
内容的提问来源于stack exchange,提问作者Ronny Sulistio
相关产品推荐
相关产品推荐

