2012-11-02 496 views
22

Google Play services是一個Android庫,其目標是提供:Google Play服務:如何處理沒有Google Play的設備?

  • 的OAuth 2.0認證
  • Google+登錄
  • Google+的+1按鈕
  • 其他各種東西

如果我要使用它(例如因爲我想要Google+登錄),那些設備沒有Google Play的用戶會遇到什麼情況? (Nook,Cyanogenmod,中國移動,舊設備等)

問題:我的應用程序會與這些設備不兼容嗎?它會顯示爲兼容,但然後崩潰,或不工作?
使用Google Play服務時,是否有最佳做法來記住這一點?

回答

23

如果Google Play服務的功能對您的應用程序至關重要,那麼您的應用程序無法運行。

您可以檢查服務是否在您的應用程序內啓用,如果Play Services可用,則返回ConnectionResult.SUCCESS

您現在可以嘗試說服用戶安裝它(如果可能)或禁用正在使用該服務的功能。

由於Google Play服務不是清單中聲明的​​功能,因此您的應用應該在任何設備上安裝正常,但如果您使用API​​時未檢查它們是否可用,則可能會在以後崩潰。

您可以嘗試模擬器的行爲。只需創建一個沒有Google API的AVD,並將其放到應用程序上。

+1

這種方法已被移動和棄用。請參閱下面的@ Maxi的新方法的答案:http://stackoverflow.com/a/34943703/1139908 – karl

-2

如果你以某種方式需要使用播放服務,或者如果你保持一個傳統的應用程序,使通話播放服務,那麼我會推薦這個策略:

  1. 在應用程序啓動,檢查遊戲服務是否用或不
  2. 如果沒有可用的,重定向播放服務調用NOGAPP

NOGAPP是谷歌Play服務的開源實現。
它缺少很多功能,但正在積極開發中。許多功能仍然是存根。

對於位置服務,有LOST,這是Google Play服務位置API的直接替代品。

您的應用程序可能無法正常工作,但至少它比崩潰更好。

當然,最好的是從一開始就不使用Google Play服務。

22
GooglePlayServicesUtil.isGooglePlayServicesAvailable(android.content.Context) 

已棄用!

用途:

GoogleApiAvailability api = GoogleApiAvailability.getInstance(); 
     int code = api.isGooglePlayServicesAvailable(activity); 
     if (code == ConnectionResult.SUCCESS) { 
      // Do Your Stuff Here 
     } else { 
      AlertDialog alertDialog = 
       new AlertDialog.Builder(activity, R.style.AppCompatAlertDialogStyle).setMessage(
         "You need to download Google Play Services in order to use this part of the application") 
         .create(); 
      alertDialog.show(); 
     } 
+0

無需創建自己的對話框,使用GoogleApiAvailability.getInstance()。getErrorDialog(activity,code,0).show( ); – Kyle