我使用 FragmentActivity 中的 SupportMapFragment 使 Google Map API v2 在 Android 上运行良好。
但是,当没有网络连接(也没有缓存信息)时,显然无法显示 map 。 LogCat 给我一条错误消息来确认这一点(“Google Maps Android API:无法加载 map 。无法连接到 Google 服务器”),但这并没有抛出。
我如何以编程方式检测这种情况,因为在这种情况下我想转发到不同的 Activity?文档声称如果无法加载 map ,则在 SupportMapFragment 上调用的 getMap() 将返回 null,但事实似乎并非如此。
我已经搜索了将近两天的解决方案,但一无所获。我是完全忽略了某些东西还是真的不可能找出是否实际加载了某些东西?非常感谢任何帮助。
编辑:
这是我当前的代码,错误消息在执行 setContentView 后出现在日志中(使用调试器检查),但它仍然说 ConnectionResult == SUCESS。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SupportMapFragment smf = ((SupportMapFragment)
getSupportFragmentManager().findFragmentById(R.id.map));
map = smf.getMap();
if (map != null && GooglePlayServicesUtil.isGooglePlayServicesAvailable(this) ==
ConnectionResult.SUCCESS) {
// doSomething with the map
} else {
Toast.makeText(this, "Google Maps not working", Toast.LENGTH_SHORT).show();
System.out.println(GooglePlayServicesUtil.isGooglePlayServicesAvailable(this));
// forward to another activity
}
}
最佳答案
GooglePlayServicesUtil.isGooglePlayServicesAvailable 与您设备上可用的 GooglePlayServices.APK 有关。 API 不会向您提供任何有关何时加载图 block 的指示。
您可以选择:
- 通过尝试(hackish,简化)检查是否缓存了任何图 block :
new File(getExternalCacheDir(), "cache_vts_your.package.name.0").exists()
- 使用您自己的代码检查互联网可用性
解析logcat找出错误
编辑:
注意点 3 已弃用,因为出于安全原因不允许应用程序再读取日志
关于android - 如何以编程方式检测 Google map 是否实际加载到具有 API v2 的 Android 上(例如,当网络不可用时)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15845351/