getOpenSourceSoftwareLicenseInfo现在返回null

过去几天出现了一个微不足道但令人讨厌的问题。 以前我的菜单选项popup一个对话框来显示使用Google服务的法律文本是非常充分的(如果加载有点慢),但现在它是空的,没有改变的代码..

GoogleApiAvailability apiAvailability = GoogleApiAvailability.getInstance(); int resultCode = apiAvailability.isGooglePlayServicesAvailable(this); if (resultCode == ConnectionResult.SUCCESS) { AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setTitle("About"); builder.setMessage(apiAvailability.getOpenSourceSoftwareLicenseInfo(this)); builder.setPositiveButton("OK", null); builder.show(); } 

这是其他人共同的问题,即由Google更新或其他可能性引入的新错误?

Solutions Collecting From Web of "getOpenSourceSoftwareLicenseInfo现在返回null"

根据https://code.google.com/p/gmaps-api-issues/issues/detail?id=9813

看来,谷歌改变了它从oss_noticefind的文件名称third_party_licenses 。 他们基本上打破了9.0.0以下播放服务实施的许可证信息。

您将需要将版本更新到9.0.0,以便获取播放服务的更高版本的设备的许可证信息。

编辑(2016年6月6日):Google现在正在研究这个问题。

项目成员#3 l … @ google.com

感谢您的报告。 我们已经提交了这个内部,并会研究它。

状态:接受的标签:内部-29143355

是的,将Google Play服务升级到最新版本(撰写本答案时为9.0.0)解决了此问题。

我遇到了同样的问题,在升级Google Play服务后,我开始正确地获取许可证。

如果您正在维护一个旧的应用程序,并且无法从旧版Google Play服务中合理更新而不破坏大量古代function,则可以采用一种可行的解决方法:

使用Android Studio反编译getOpenSourceSoftwareLicenseInfo()方法,将该方法复制到您的项目中,并将该行更改为从“oss_notice”指向“third_party_licenses”。

  Uri var1 = (new android.net.Uri.Builder()).scheme("android.resource").authority("com.google.android.gms").appendPath("raw").appendPath("oss_notice").build(); 

  Uri var1 = (new android.net.Uri.Builder()).scheme("android.resource").authority("com.google.android.gms").appendPath("raw").appendPath("third_party_licenses").build(); 

此方法已被弃用,不再需要: https : //developers.google.com/android/reference/com/google/android/gms/common/GooglePlayServicesUtil.html#getOpenSourceSoftwareLicenseInfo(android.content.Context)

此许可证信息显示在任何运行Google Play服务的设备上的“设置”>“Google”>“开放源代码”中。 应用程序不需要显示此许可证文本,并且此方法将在未来版本的Google Play服务中被删除。

👍