getOpenSourceSoftwareLicenseInfo现在返回null

时间:2016-05-17 10:40:57

标签: android google-play

过去几天出现了一个微不足道但又令人烦恼的问题。 以前我的菜单选项弹出一个对话框,显示使用Google服务的法律文本非常全(如果加载有点慢),但现在它为null,代码没有变化..

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

4 个答案:

答案 0 :(得分:3)

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

  

谷歌似乎将其寻找的文件名从oss_notice更改为third_party_licenses。他们基本上没有获得任何低于9.0.0的播放服务实现的许可信息。

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

EDIT(2016年6月6日):Google正在调查此问题。

  

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

     

感谢您的报道。我们已经提交了   这内部并将调查它。

     

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:2)

如果您维护的是旧应用,并且无法在不破坏大量古老功能的情况下从旧版Google Play服务中进行合理更新,则可以采用可行的解决方法:

使用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();

答案 3 :(得分:1)

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

  

此许可证信息显示在设置> Google>在运行Google Play服务的任何设备上开源。应用程序无需显示此许可证文本,此方法将在未来版本的Google Play服务中删除。