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 应用程序是不是被禁用的主要内容,如果未能解决你的问题,请参考以下文章