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更新或其他可能性引入的新错误?

  • 1个密钥库签署所有应用程序或每个应用程序1个?
  • 我们应该在Android Market的Keystore中使用“Distinguished Name”
  • 在Android市场发布付费应用程序 - 印度
  • 实施Google应用内结算 - 哪个Google教程是正确的?
  • Google Play服务模拟器,实现Google Plusloginbutton等
  • 我可以将我的应用程序隐藏在Google Play商店中吗?
  • Android市场上的应用程序 - HTTP通知不会来
  • 除非您更新Google Play服务错误,否则此应用将无法运行
  • 根据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服务中被删除。

    👍