1

数日後、この分野のほぼすべての解決策を調べましたが、あきらめました。Googgle ドライブを使用しようとしましたが、最も単純なコードでは既に失敗しています。コード:

static String accountName = "xxx@gmail.com"; //my personal google account for trial purposes
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);        
    setContentView(R.layout.sync);

    syncbutton = (ImageButton) findViewById(R.id.syncButton);
    syncbutton.setOnClickListener(new OnClickListener() {

    @SuppressWarnings("deprecation")
    @Override
    public void onClick(View v) {
           Context synccontext = getApplicationContext();

           GoogleAccountCredential credential;

             String scope = "oauth2:https://www.googleapis.com/auth/drive.appdata";

           //from some reason the eclipse mark the usingOAuth2 as deprecated, I failed to        figure out why
           credential = GoogleAccountCredential.usingOAuth2(synccontext, scope);

           credential.setSelectedAccountName(accountName);

             try {
              credential.getToken();
              } catch (IOException e2) {
              // TODO Auto-generated catch block
              System.out.println ("token IOException = " + e2);
              } catch (GoogleAuthException e2) {
              // TODO Auto-generated catch block
              System.out.println ("token GoogleAuthException = " + e2);
    }

             service = getDriveService(credential);

getToken の段階で、次のエラー メッセージが表示されます。

09-01 12:24:48.645: W/dalvikvm(1131): VFY: unable to resolve static field 1914 (auth_client_play_services_err_notification_msg) in Lcom/google/android/gms/R$string;
09-01 12:24:48.645: D/dalvikvm(1131): VFY: replacing opcode 0x60 at 0x001a
09-01 12:24:48.645: I/dalvikvm(1131): DexOpt: unable to optimize static field ref 0x077b at 0x42 in Lcom/google/android/gms/auth/GoogleAuthUtil;.a
09-01 12:24:48.645: I/dalvikvm(1131): DexOpt: unable to optimize static field ref 0x077c at 0x54 in Lcom/google/android/gms/auth/GoogleAuthUtil;.a
09-01 12:24:48.650: I/dalvikvm(1131): DexOpt: unable to optimize static field ref 0x0778 at 0x73 in Lcom/google/android/gms/auth/GoogleAuthUtil;.a
09-01 12:24:48.650: I/dalvikvm(1131): DexOpt: unable to optimize static field ref 0x0779 at 0x76 in Lcom/google/android/gms/auth/GoogleAuthUtil;.a
09-01 12:24:48.650: I/dalvikvm(1131): DexOpt: unable to optimize static field ref 0x0777 at 0x79 in Lcom/google/android/gms/auth/GoogleAuthUtil;.a
09-01 12:24:48.665: E/GoogleAuthUtil(1131): Calling this from your main thread can lead to deadlock and/or ANRs
09-01 12:24:48.665: E/GoogleAuthUtil(1131): java.lang.IllegalStateException: calling this from your main thread can lead to deadlock
09-01 12:24:48.665: E/GoogleAuthUtil(1131):     at com.google.android.gms.auth.GoogleAuthUtil.b(Unknown Source)
09-01 12:24:48.665: E/GoogleAuthUtil(1131):     at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
09-01 12:24:48.665: E/GoogleAuthUtil(1131):     at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
09-01 12:24:48.665: E/GoogleAuthUtil(1131):     at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential.getToken(GoogleAccountCredential.java:277)
09-01 12:24:48.665: E/GoogleAuthUtil(1131):     at com.gal.shoppinglist.SyncActivity$1.onClick(SyncActivity.java:80)
09-01 12:24:48.665: E/GoogleAuthUtil(1131):     at android.view.View.performClick(View.java:4211)
09-01 12:24:48.665: E/GoogleAuthUtil(1131):     at android.view.View$PerformClick.run(View.java:17267)
09-01 12:24:48.665: E/GoogleAuthUtil(1131):     at android.os.Handler.handleCallback(Handler.java:615)
09-01 12:24:48.665: E/GoogleAuthUtil(1131):     at android.os.Handler.dispatchMessage(Handler.java:92)
09-01 12:24:48.665: E/GoogleAuthUtil(1131):     at android.os.Looper.loop(Looper.java:137)
09-01 12:24:48.665: E/GoogleAuthUtil(1131):     at android.app.ActivityThread.main(ActivityThread.java:4898)
09-01 12:24:48.665: E/GoogleAuthUtil(1131):     at java.lang.reflect.Method.invokeNative(Native Method)
09-01 12:24:48.665: E/GoogleAuthUtil(1131):     at java.lang.reflect.Method.invoke(Method.java:511)
09-01 12:24:48.665: E/GoogleAuthUtil(1131):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
09-01 12:24:48.665: E/GoogleAuthUtil(1131):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
09-01 12:24:48.665: E/GoogleAuthUtil(1131):     at dalvik.system.NativeStart.main(Native Method)
09-01 12:24:48.665: D/AndroidRuntime(1131): Shutting down VM
09-01 12:24:48.665: W/dalvikvm(1131): threadid=1: thread exiting with uncaught exception (group=0x4106f2a0)
09-01 12:24:48.670: E/AndroidRuntime(1131): FATAL EXCEPTION: main
09-01 12:24:48.670: E/AndroidRuntime(1131): java.lang.IllegalStateException: calling this from your main thread can lead to deadlock
09-01 12:24:48.670: E/AndroidRuntime(1131):     at com.google.android.gms.auth.GoogleAuthUtil.b(Unknown Source)
09-01 12:24:48.670: E/AndroidRuntime(1131):     at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
09-01 12:24:48.670: E/AndroidRuntime(1131):     at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
09-01 12:24:48.670: E/AndroidRuntime(1131):     at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential.getToken(GoogleAccountCredential.java:277)
09-01 12:24:48.670: E/AndroidRuntime(1131):     at com.gal.shoppinglist.SyncActivity$1.onClick(SyncActivity.java:80)
09-01 12:24:48.670: E/AndroidRuntime(1131):     at android.view.View.performClick(View.java:4211)

基本的なことだと思いますが、あらかじめお詫び申し上げます。どんな助けでも大歓迎です。

4

1 に答える 1

0

通常、認証の失敗は次の 2 つのことに関連しています。

  1. API キーの不一致、または

  2. Google API コンソールの[サービス] でDrive APIサービスを有効にするのを忘れました

番号 2 の場合は、サービスを有効にしてから、 [ API アクセス]の下の[新しいキーを生成] を押してキーを再作成します。

編集:非推奨は、対象の API に関連しています。Android が特定の API レベルの後にそのコマンドを削除し、ターゲット API がより高い場合、問題が発生することが示されています。廃止されたコマンドの代替コマンド (存在する場合) を見つけ、デバイスの API レベルに応じて特定のコマンドを呼び出す必要があります。

于 2013-09-01T09:54:03.233 に答える