相关疑难解决方法(0)

Google Drive API - 名称不得为空:null(但我已将有效的帐户名称传递给GoogleAccountCredential)

最近,我有Android代码访问Google云端硬盘.我正在使用Google API Client Library for Java而不是Google Play服务客户端库

private static GoogleCloudFile searchFromGoogleDrive(Drive drive, String qString, HandleUserRecoverableAuthIOExceptionable h, PublishProgressable p) {
    try {
        Files.List request = drive.files().list().setQ(qString);

        do {        
            if (p.isCancelled()) {
                return null;
            }

            FileList fileList = request.execute();
Run Code Online (Sandbox Code Playgroud)

如果我使用,代码可以在几年内完成100%罚款targetSdkVersion 21.

最近,我将我的应用迁移到targetSdkVersion 23了Google Drive相关代码的0更改.

但是,代码崩溃了FileList fileList = request.execute();,但有以下异常.

使用1.18.0-rc时出现错误日志

Process: org.yccheok.jstock.gui, PID: 30317
java.lang.RuntimeException: An error occurred while executing doInBackground()
    at android.os.AsyncTask$3.done(AsyncTask.java:309)
    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
    at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
    at java.util.concurrent.FutureTask.run(FutureTask.java:242)
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
    at …
Run Code Online (Sandbox Code Playgroud)

android google-drive-api

12
推荐指数
2
解决办法
8452
查看次数

尽管调用setSelectedAccountName(Android 6.0),GoogleAccountCredential名称仍为null

我使用安全的后端创建了一个端点,并且自从3月份开始在我正在构建的应用程序中使用它(源文档在这里).我最近在我的Android 6.0设备上安装了最新版本,弹出了一个奇怪的错误(它在4.2.2和5.1上完美运行).

具体错误是:

IllegalArgumentException: the name must not be empty: null 
Run Code Online (Sandbox Code Playgroud)

我跟踪了凭证的错误,您可以看到下面的代码.在Android 6.0帐户可能是"user@gmail.com"但字符串'test'结果为null!

有什么特定的6.0改变了GoogleAccountCredential吗?

public static GoogleAccountCredential getCredential(Context ctx) {

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ctx);
    String account = prefs.getString(UserProfileHelper.PREF_USER_ACCOUNT, "");
    GoogleAccountCredential credential = GoogleAccountCredential.usingAudience(ctx,
            "server:client_id:MY_ACCOUNT_NUMS.apps.googleusercontent.com")
            .setSelectedAccountName(account);


    String test = credential.getSelectedAccountName();
    return credential;
}
Run Code Online (Sandbox Code Playgroud)

google-app-engine android credentials google-account google-cloud-endpoints

9
推荐指数
1
解决办法
1917
查看次数