2

我使用FragmentActivity中的SupportMapFragment,使Google Map API v2在Android上正常工作。如何以pogrammatically方式檢測Google地圖是否實際上通過API v2在Android上加載(例如網絡不可用時)?

但是,當沒有網絡連接(並且沒有緩存的信息)時,顯然不能顯示地圖。 LogCat給我一個確認這個錯誤的消息(「Google Maps Android API:無法加載地圖,無法連接到Google服務器」),但這不會被拋出。

如何以編程方式檢測此案例,因爲我想在此情況下轉發到其他活動?該文檔聲稱,如果沒有地圖可以加載getMap()在SupportMapFragment上調用將返回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 
    } 
} 

回答

2

GooglePlayServicesUtil.isGooglePlayServicesAvailable有關GooglePlayServices.APK您的設備上可用。 API不會告訴您何時加載磁貼。

你的選項:new File(getExternalCacheDir(), "cache_vts_your.package.name.0").exists()

  • 檢查網絡可用性用自己的代碼
  • 解析logcat中找到:

    1. 檢查是否有瓦片被嘗試(hackish的,簡化的)緩存錯誤

    編輯:

    注意點3已過時,因爲由於安全原因,應用程序不允許再讀取日誌

  • +0

    非常感謝這些想法,僅實施了no。 1,它似乎工作得很好。 但是,我有點不明白爲什麼Google不會以編程方式提供LogCat中的錯誤消息。 – Oliver 2013-04-06 10:15:56

    +0

    @Oliver你將不得不使用這兩個知道。應用程序第一次啓動時,您將擁有空的緩存,但即將加載磁貼。給答案增加了第三道黑客。 – 2013-04-06 10:29:33

    +0

    是的,你是對的,但對於我的目的而言,看到緩存地圖應該沒問題。再次感謝!出於好奇,我如何以編程方式獲得LogCat文本?順便說一句,我只是試了一下,當緩存瓷磚可用時,錯誤信息不會出現... – Oliver 2013-04-06 13:00:12

    相關問題