过去几天出现了一个微不足道但又令人烦恼的问题。 以前我的菜单选项弹出一个对话框,显示使用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更新引入的新错误或其他一些可能性?
答案 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)
此许可证信息显示在设置> Google>在运行Google Play服务的任何设备上开源。应用程序无需显示此许可证文本,此方法将在未来版本的Google Play服务中删除。