2016-03-24 2 views
2

При попытке сохранить захваченное изображение в Google Drive, я получаю следующее сообщение об ошибке:Нелегальная Довод Исключение при попытке сохранить изображение в Google Drive

java.lang.IllegalArgumentException: the name must not be empty: null 
           at android.accounts.Account.<init>(Account.java:48) 
           at com.google.android.gms.auth.zzd.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:255) 
           at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential$RequestHandler.intercept(GoogleAccountCredential.java:279) 
           at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:859) 
           at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:410) 
           at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:343) 
           at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:460) 
           at com.amrutpatil.makeanote.GDActions.search(GDActions.java:290) 
           at com.amrutpatil.makeanote.GDActions.search(GDActions.java:211) 

Я могу успешно войти в систему и выбрать папку Google Drive, однако, когда я пытаюсь сохранить изображение, я поднимаю проблему выше.

В настоящее время я использую Зефир на физическом устройстве Nexus 6.

Мой GDActions.java код:

private static ArrayList<GF> search(ArrayList<GF> gfs, com.google.api.services.drive.Drive.Files.List qry) throws IOException { 
     String npTok = null; 
     if (qry != null) do { 
      FileList gLst = qry.execute(); //get an error here 
      if (gLst != null) { 
       for (File gFl : gLst.getItems()) { 
        if (gFl.getLabels().getTrashed()) continue; 
        gfs.add(new GF(gFl.getTitle(), gFl.getId())); 
       } 
       npTok = gLst.getNextPageToken(); 
       qry.setPageToken(npTok); 
      } 
     } while (npTok != null && npTok.length() > 0); 
     return gfs; 
    } 

Я получаю сообщение об ошибке при FileList gLst = qry.execute() выше.

Это происходит, когда метод поиска вызывается здесь:

static ArrayList<GF> search(String prId, String titl, String mime) { 
     ArrayList<GF> gfs = new ArrayList<>(); 
     String qryClause = "'me' in owners and "; 
     if (prId != null) qryClause += "'" + prId + "' in parents and "; 
     if (titl != null) qryClause += "title = '" + titl + "' and "; 
     if (mime != null) qryClause += "mimeType = '" + mime + "' and "; 
     qryClause = qryClause.substring(0, qryClause.length() - " and ".length()); 
     com.google.api.services.drive.Drive.Files.List qry = null; 
     try { 
      qry = mGOOSvc.files().list().setQ(qryClause) 
        .setFields("items(id, labels/trashed, title), nextPageToken"); 
      gfs = search(gfs, qry); 
     } catch (GoogleAuthIOException gaiEx) { 
      try { 
       gfs = search(gfs, qry); //Invoked here 
      } catch (Exception g) { 
       GDUT.le(g); 
      } 
     } catch (Exception e) { 
      GDUT.le(e); 
     } 
     return gfs; 
    } 

ответ

0

java.lang.IllegalArgumentException: the name must not be empty: null.

«Имя» - это имя учетной записи. Убедитесь, что вы устанавливаете объект GoogleAccountCredential.

mAccountCredential.setSelectedAccountName("[email protected]"); 

Примечание: укажите имя учетной записи как полное электронное письмо; [email protected], а не только user123.

+0

Я попытался установить имя учетной записи, как вы предложили. Тем не менее, я продолжаю получать ту же ошибку, упомянутую выше. – ap6491

0

Оказывается, что возникла проблема с правами доступа. Хотя у меня было разрешение GET_ACCOUNTS, установленное в моем файле AndroidManifest.xml, мне нужно было вручную включить разрешения «Контакты» в настройках моего приложения.

Это может быть проблема с устройством, поскольку я запускал свое приложение на физическом устройстве Nexus 6 с Android Marshmallow 6.0.1.

Возможно, вы захотите проверить настройки приложения, чтобы быть в безопасности.

Смежные вопросы