如何检测pogrammatically一个谷歌地图是否实际加载在Android上API V2(例如,

2019-08-19 23:17发布

我有谷歌地图API V2使用一个FragmentActivity一个SupportMapFragment在Android上正常工作。

然而,当没有网络连接(并且没有缓存的信息),很明显,没有图可以示出。 logcat的给我一个错误消息,确认此(“谷歌地图API的Android:无法加载地图无法连接到谷歌的服务器”),但这不是抛出。

我如何以编程方式检测到这种情况,是因为我想转发到在这种情况下,不同的活动? 该文档声称,如果没有地图可以加载的GetMap()呼吁SupportMapFragment将返回null,但这似乎并不如此。

我一直在寻找周围近两天的解决方案,但没能发现任何东西。 我完全忽视的东西或者是不是真的不可能找到了一些东西是否actualy装? 任何帮助是极大的赞赏。

编辑:

这里是我当前的代码,(检查与调试器)被执行后的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
    }
}

Answer 1:

GooglePlayServicesUtil.isGooglePlayServicesAvailable就是GooglePlayServices.APK设备上提供相关的。 API不会给你加载切片时的任何迹象。

你的选项:

  1. 检查是否有瓦片被尝试(hackish的,简化的)缓存: new File(getExternalCacheDir(), "cache_vts_your.package.name.0").exists()
  2. 检查网络可用性用自己的代码
  3. 解析logcat中查找错误

编辑:

注3点被推荐使用,因为应用程序不能再阅读日志由于安全原因



文章来源: How can I detect pogrammatically whether a Google Map was actually loaded on Android with API v2 (e.g. when network is not available)?