- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在开发一个在某些时候将少量数据发送回Google表格的应用程序,但是我无法使其正常工作:
public void SheetUpdate() {
GoogleAccountCredential mCredential;
Sheets mService;
final String[] SCOPES = { SheetsScopes.SPREADSHEETS };
mCredential = GoogleAccountCredential.usingOAuth2(getApplicationContext(), Arrays.asList(SCOPES))
.setBackOff(new ExponentialBackOff())
.setSelectedAccountName("oscarcookeabbott@gmail.com");
Log.e("DEBUG", "SheetUpdate: " + mCredential.getSelectedAccountName());
HttpTransport transport = AndroidHttp.newCompatibleTransport();
JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
mService = new Sheets.Builder(transport, jsonFactory, mCredential)
.setApplicationName("Listeau")
.build();
/*
String range = "[Sheet Name]![Start]:[End]";
mService.spreadsheets().values().update(enumId, range, valueRange)
.setValueInputOption("RAW")
.execute();
*/
ValueRange values = new ValueRange();
values.set("EMAIL", "tonyjones@abc.net.au");
values.set("AUTH", "[INSERT DATE]");
values.set("SUB", "[INSERT DATE + MONTH]");
try {
mService.spreadsheets().values().append("1meAAvjdPmghn6wl_IKc-_NJx_M85I_yqsn4Nwm_j_X0", "Users", values)
.setValueInputOption("RAW")
.execute();
} catch(IOException e) {
Log.e("BUG", "SheetUpdate: IOException");
}
}
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
mCredential
的名称未设置(
null
),该错误在调用mService.execute时被捕获。
E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.pybuspr.listeriafoodusa/com.pybuspr.listeau.Master}: java.lang.IllegalArgumentException: the name must not be empty: null
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
at android.app.ActivityThread.access$600(ActivityThread.java:130)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalArgumentException: the name must not be empty: null
at android.accounts.Account.<init>(Account.java:48)
at com.google.android.gms.auth.zze.getToken(Unknown Source)
at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential.getToken(GoogleAccountCredential.java:269)
at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential$RequestHandler.intercept(GoogleAccountCredential.java:294)
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:868)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:419)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:469)
at com.pybuspr.listeau.Master.SheetUpdate(Master.java:167)
at com.pybuspr.listeau.Master.onCreate(Master.java:48)
at android.app.Activity.performCreate(Activity.java:5008)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
at android.app.ActivityThread.access$600(ActivityThread.java:130)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
最佳答案
您的execute()
调用通过您创建的GoogleAccountCredential
对象进行,并且在内部失败。
查看开放源代码Account.java的代码,您可以看到传入的名称为null。调用者GoogleAuthUtil
是Play服务库的封闭源代码部分,但是我们可以很好地猜测发生了什么。它尝试从手机的设置中获取Google帐户,但找不到匹配项。
您已经怀疑,权限是此处的一个因素,我认为这是导致失败的原因。以Android 6及更高版本为目标时,在 list 中声明权限可能不够,在您的情况下,GET_ACCOUNTS
受此影响。参见here。
您需要在运行时请求权限(并彻底处理用户拒绝权限的情况)。请参阅here以了解有关操作方法。或者,如果您没有任何相关的依存关系,则可以将目标级别降低到5.1或更低,并且至少现在,它将使用较旧的权限模型。
关于android - GoogleAccountCredential-[错误]名称不能为空: null - despite permissions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41219555/
我最近使用 Android SDK 管理器和 Android Studio 更新了几个库。我的一个导入现在失败了: import com.google.api.client.googleapis.ex
我正在尝试启动一个带有 Intent 的选择帐户对话框,我通过 GoogleAccountCredential.newChooseAccountIntent 获得。 当我编译源代码时,发生错误 NoC
账户名设置后还是空 我看过 this answer ,但我确实在 list 中拥有 GET_ACCOUNTS 权限,并且在运行时受到保护。 以下设置正在 Pixel XL 模拟器 API 25 (An
我打算编写一个 Android 应用程序来从 Google Drive 中获取文件。 如果存储空间很大,下载文件肯定需要几个小时。在这种情况下,我需要刷新 token 才能完成该过程。据我所知,Goo
我希望能够显示 google 帐户的显示名称。使用 GoogleAccountCredential 我可以获得电子邮件。如何从 GoogleAccountCredential(电子邮件)获取显示名称?
我正在使用 CONTACTS 组的 GET_ACCOUNTS 权限,并在我的代码中处理它。我只是想不通为什么设置后帐户名仍然为空。该应用程序已具有权限,因为没有弹出对话框告诉用户授予权限。 我像这样在
credential = GoogleAccountCredential.usingAudience(this, AUDIENCE); credential.setSelectedAccountNam
我正在使用此方法对 Google Drive 进行授权: https://developers.google.com/drive/quickstart-android 选择帐户效果很好。现在我想在 p
我正在为我的应用程序添加 Google Drive 支持,使用 v3 REST Api,如下所述:https://developers.google.com/drive/v3/web/quicksta
Android 构建失败并出现以下错误 - Error:(23, 68) error: package com.google.api.client.googleapis.extensions.andr
我一直在关注 Google 的 App Engine 连接 Android 项目教程,但我遇到了 this page 问题。 . 特别是在第 8c 节中似乎有错误。如题所述,以下代码中并没有调用onA
在 Android M-Preview 上 GoogleAccountCredential.setSelectedAccount 似乎不起作用。 在调试时,我注意到调用该方法后,对象的selected
我一直在开发一个在某些时候将少量数据发送回Google表格的应用程序,但是我无法使其正常工作: public void SheetUpdate() { GoogleAccountCredent
从 Android Studio 2.2 更新到 2.3 后,编辑器显示一个错误,声称无法解析这些类: import com.google.api.client.googleapis.extensio
大约 2 周前我发布了一个非常成功的应用程序。但是从昨天开始,用户不断向我发送有关 Drive 无法访问的电子邮件。快速调试后,我发现对 Drive API 的请求现在返回“403 Forbidden
实际上,我最近 4 天尝试在 YouTube 上上传视频。有一些限制:- 1- 设备中将没有 google play 服务。 2- 也没有 google plus。 3- 也没有任何 Gmail 帐户
我正在使用 Eclipse Juno ADT bundle + Google Plugin for Eclipse 为 Android 4+ 开发。我需要以编程方式登录谷歌帐户才能使用谷歌日历 API
我使用安全后端创建了一个端点,并且自 3 月以来一直在我正在构建的应用程序上使用它(源文档 here)。我最近在我的 Android 6.0 设备上安装了最新版本并弹出了一个奇怪的错误(它在 4.2.
最近,我一直在 Android 上使用 Google API,尤其是 Analytics、AdSense 和 Tasks API。 我看过谷歌提供的一些示例,他们使用此语句获取 GoogleAccou
我正在使用以下方法检索 GoogleAccountCredential 对象: GoogleAccountCredential credential = GoogleAccountCredential
我是一名优秀的程序员,十分优秀!