2

我使用 FragmentActivity 中的 SupportMapFragment 在 Android 上运行良好的 Google Map API v2。

但是,当没有网络连接(也没有缓存信息)时,显然无法显示地图。LogCat 给了我一条错误消息,确认了这一点(“Google Maps Android API:无法加载地图。无法连接到 Google 服务器”),但这并没有被抛出。

我如何以编程方式检测这种情况,因为在这种情况下我想转发到不同的活动?文档声称,如果无法加载地图,则在 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
    }
}
4

1 回答 1

2

GooglePlayServicesUtil.isGooglePlayServicesAvailable 与您设备上可用的 GooglePlayServices.APK 相关。API 不会为您提供任何有关何时加载图块的指示。

您可以选择:

  1. 通过尝试检查是否缓存了任何切片(hackish,简化):new File(getExternalCacheDir(), "cache_vts_your.package.name.0").exists()
  2. 使用您自己的代码检查互联网可用性
  3. 解析 logcat 以查找错误

编辑:

注意点 3 已弃用,因为出于安全原因,应用程序不再允许读取日志

于 2013-04-06T09:10:42.010 回答