为了完整性
我猜您是按照Google Drive QuickStart中的代码示例来处理这个异常的。如果是这样,您可能会发现我必须修改的以下内容很有趣。
Google Play 服务库(注意。请参阅下面的评论!)
该文档使用向 Android 项目添加库的旧方法。当使用最新的 ADT 执行时,这将失败。您将能够编译并上传到设备/模拟器,但在执行时您将收到 NoClassDefFoundError。
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/AccountPicker;
要解决此问题,您应该将文件复制粘贴到google-play-services.jar
文件libs
夹中。
缺少元标记
直到下一个错误。然后,我收到了一份IllegalStateException
说明,要求在包含 google-play-services 版本的清单中添加元标记。
因此,在清单的应用程序标记中添加:
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/>
在其中一个资源文件 ( res/values/a-file-here.xml
) 中添加以下内容:
<integer name="google_play_services_version">4030500</integer>
在我的情况下,lib 匹配这个版本。如果您在此处输入错误的版本,您将收到一个错误,显示要指定的正确版本。所以一定要检查输出。
没有权限
最后,我在应用程序中收到了 oauth 提示,只是为了发现示例应用程序仍然缺少权限。错误供参考:
java.io.FileNotFoundException: /storage/emulated/0/Pictures/IMG_20131211_110629.jpg: open failed: EACCES (Permission denied)
在示例中列出的权限旁边:
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.INTERNET" />
还要在清单中添加 WRITE_EXTERNAL_STORAGE 权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
更多资源
如果您com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAuthIOException
在根本原因的某个描述中遇到异常,Unknown
您应该检查Google API 控制台中的设置。我在包不匹配时收到此错误。
另一个感兴趣的链接是oauth2 文档和google api playground。