2017-06-09 58 views
0

我试着去定义它基于从方法自定义“更新谷歌播放服务”对话框

googleApiAvailability.isGooglePlayServicesAvailable(活动)未来的状态码显示错误对话框;

此方法返回然后得到传递给方法

googleApiAvailability.getErrorDialog(活动,状态2404).show()的状态码;

然后向用户显示一个对话框,询问他们是否需要更新Google Play服务或根据错误代码(本例中为“状态”)启用它们等。从我可以告诉他们是基于状态设置对话框文本,但我想定制它有点,因为我用它来通知,所以我想在对话框中说,用户将无法使用通知没有这个功能安装/启用/更新的应用程序?

此外,我想能够添加一个取消按钮与自定义文本,如“它是好的”或沿着这些行?

我在另一个应用中看到类似的东西,并认为这是一个好主意。

编辑:

public static boolean checkGooglePlayServices(Activity activity) { 
    GoogleApiAvailability googleApiAvailability = GoogleApiAvailability.getInstance(); 
    int status = googleApiAvailability.isGooglePlayServicesAvailable(activity); 
    if (status != ConnectionResult.SUCCESS) { 
     if (googleApiAvailability.isUserResolvableError(status)) { 
     Dialog dialog = googleApiAvailability.getErrorDialog(activity, status, 1); 
     dialog.setTitle("This is a test title"); 
     dialog.show(); 
     } 
     return false; 
    } 
    return true; 
    } 
+1

我认为最简单的方法是建立自己的对话框。或者,如果你的解决方案非常糟糕,getErrorDialog()返回一个对话框,你可以在显示它之前操作它的View ... – lelloman

+0

@lelloman我已经试过了,看起来我不能改变对话框中的文本,只有真正奇怪的标题 – x10sion

+0

也许你想添加你试过的问题的代码,如果改变对话框的文本将是一个很好的解决方案,也许我们可以使它工作。无论如何,这是肮脏的,只需要自己的对话,它只需要很少的努力 – lelloman

回答

0

resultCode为可以具有低于值。

public static final int SUCCESS = 0; 
public static final int SERVICE_MISSING = 1; 
public static final int SERVICE_VERSION_UPDATE_REQUIRED = 2; 
public static final int SERVICE_DISABLED = 3; 
public static final int SIGN_IN_REQUIRED = 4; 
public static final int INVALID_ACCOUNT = 5; 
public static final int RESOLUTION_REQUIRED = 6; 
public static final int NETWORK_ERROR = 7; 
public static final int INTERNAL_ERROR = 8; 
public static final int SERVICE_INVALID = 9; 
public static final int DEVELOPER_ERROR = 10; 
public static final int LICENSE_CHECK_FAILED = 11; 
public static final int CANCELED = 13; 
public static final int TIMEOUT = 14; 
public static final int INTERRUPTED = 15; 
public static final int API_UNAVAILABLE = 16; 
public static final int SIGN_IN_FAILED = 17; 
public static final int SERVICE_UPDATING = 18; 
public static final int SERVICE_MISSING_PERMISSION = 19; 
public static final int RESTRICTED_PROFILE = 20; 

不叫getErrorDialog而不是打电话给你owndialog,并采取相应的行动..

static String getStatusString(int var0) { 
     switch(var0) { 
     case -1: 
      return "UNKNOWN"; 
     case 0: 
      return "SUCCESS"; 
     case 1: 
      return "SERVICE_MISSING"; 
     case 2: 
      return "SERVICE_VERSION_UPDATE_REQUIRED"; 
     case 3: 
      return "SERVICE_DISABLED"; 
     case 4: 
      return "SIGN_IN_REQUIRED"; 
     case 5: 
      return "INVALID_ACCOUNT"; 
     case 6: 
      return "RESOLUTION_REQUIRED"; 
     case 7: 
      return "NETWORK_ERROR"; 
     case 8: 
      return "INTERNAL_ERROR"; 
     case 9: 
      return "SERVICE_INVALID"; 
     case 10: 
      return "DEVELOPER_ERROR"; 
     case 11: 
      return "LICENSE_CHECK_FAILED"; 
     case 13: 
      return "CANCELED"; 
     case 14: 
      return "TIMEOUT"; 
     case 15: 
      return "INTERRUPTED"; 
     case 16: 
      return "API_UNAVAILABLE"; 
     case 17: 
      return "SIGN_IN_FAILED"; 
     case 18: 
      return "SERVICE_UPDATING"; 
     case 19: 
      return "SERVICE_MISSING_PERMISSION"; 
     case 20: 
      return "RESTRICTED_PROFILE"; 
     case 21: 
      return "API_VERSION_UPDATE_REQUIRED"; 
     case 42: 
      return "UPDATE_ANDROID_WEAR"; 
     case 99: 
      return "UNFINISHED"; 
     case 1500: 
      return "DRIVE_EXTERNAL_STORAGE_REQUIRED"; 
     default: 
      return (new StringBuilder(31)).append("UNKNOWN_ERROR_CODE(").append(var0).append(")").toString(); 
     } 
    } 

PS:见ConnectionResult.java类的更多信息。

+0

我已经考虑过这个以及我没有真正看过的问题是处理每个场景(可以修复由用户)喜欢启用的服务,更新(直接到谷歌播放商店)或该服务一般缺少 – x10sion