Google Maps Android API V2 检查 Google Maps 应用程序是不是被禁用

Posted

技术标签:

【中文标题】Google Maps Android API V2 检查 Google Maps 应用程序是不是被禁用【英文标题】:Google Maps Android API V2 Check if Google Maps app is disabledGoogle Maps Android API V2 检查 Google Maps 应用程序是否被禁用 【发布时间】:2017-01-14 17:13:40 【问题描述】:

这个question 谈到检查设备上是否安装了谷歌地图并且答案工作正常。在较新版本的 android 中,我们只能禁用谷歌地图应用程序而不是卸载它,因此上述答案对我来说并不完全有效。

当我在安装了 Google Play 服务 9.2.x 的手机中测试我的应用程序时,当 Google 地图应用程序被禁用时它无法工作,这很奇怪,因为它在具有 Google Play 服务 >= 9.4 的设备上运行良好。 x.

有没有办法检查谷歌地图应用程序是否被禁用? (请注意,应用程序仍然安装,只是被禁用。)

【问题讨论】:

【参考方案1】:

您可以通过使用包名来检查这一点,如下所示

String packageName = "com.google.android.gms.maps";
int flag = 0;
ApplicationInfo appInfo = getActivity().getPackageManager().getApplicationInfo(packageName,flag);
boolean isAppDisabled = appInfo.enabled;

阅读here 了解更多详情。您还可以根据文档链接中的要求设置不同的标志常量。

【讨论】:

@RioMarieA.Callos 请接受这个作为答案。 谢谢。很高兴我能提供帮助。 @GauravSarma big 10x 我只需要将包更改为com.google.android.apps.maps,因为...gms.maps 会抛出错误 @JockyDoe 很高兴我能帮上忙 :)【参考方案2】:

试试这个,例如,要显示旧金山的地图,可以使用以下代码:

Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");

现在是重要的部分:

if (mapIntent.resolveActivity(getPackageManager()) != null) 
startActivity(mapIntent);

如您所见,如果不为空,则启动该活动。当然,您可以在 ELSE 语句中包含一条消息,让用户宣布他/她的设备上没有安装 Google 地图。

【讨论】:

【参考方案3】:

连接@GauravSarma 的非工作解决方案和@CristianBabarusi 的字符串我也得到了非工作解决方案。它在没有 Google Play 服务的 API 19 模拟器上返回 true。

private fun isMapsAvailable() : Boolean 
    val packageName = "com.google.android.apps.maps"
    val flag = 0
    return try 
        val appInfo = activity?.packageManager?.getApplicationInfo(packageName, flag)
        appInfo?.enabled == true
     catch (e: PackageManager.NameNotFoundException) 
        false
    

【讨论】:

以上是关于Google Maps Android API V2 检查 Google Maps 应用程序是不是被禁用的主要内容,如果未能解决你的问题,请参考以下文章

Maps SDK for Android v.3.0.0 BETA "是否可以在没有Google Play服务的设备上运行?

Google Maps API v.3.31更新会破坏StageWebView和StageWebViewBridge

Google Maps Android API V2 检查 Google Maps 应用程序是不是被禁用

无法运行 Google Maps Android API Utility Demo

Google Geolocation API 和 Google Maps Android SDK

Android:使用 Google API 获取实时方向,还是与 Google Maps 通信?