2017-05-07 7 views
0

Android用GoogleドライブAPIを使用しています。これは私が今持っているコードです。openFileActivityBuilderインテント。接続を待つ方法とファイルを取得する方法

public void downloadFromDrive(){ 

     mGoogleApiClient.connect(); 


     IntentSender intentSender = Drive.DriveApi.newOpenFileActivityBuilder().setMimeType(new String[]{"text/plain"}).build(mGoogleApiClient); 
    try{ 
     startIntentSenderForResult(intentSender,2,null,0,0,0); 
    } catch (IntentSender.SendIntentException e) { 
     e.printStackTrace(); 
     Log.w(TAG, "Unable to send intent", e); 

    } 

}

現在それに2つの問題点があります。 resultCallbackがないので、mGoogleClientはmGoogleApiClient.connect()に接続しません。それが実際に接続されるまで待つ方法に関するアイデア? isConnected()またはonConnect()を使用すると、無限ループになります。私は現在、別のメソッド(アップロードするもの)でAPIクライアントを接続しています

インテント送信者からFileStreamを取得するにはどうすればよいですか?私はGoogleドライブにアップロードする方法についてのコードを持っており、どの方法でもOutputStreamWriterを指定する必要はありませんでした。私はちょうどintentsenderと呼ばれる出力ストリームを作成し、GUIは問題なくファイルをアップロードしました。

+0

['enableAutoManage(FragmentActivity、GoogleApiClient.OnConnectionFailedListener)'](https://developers.google.com/android/reference/com/google/android/gms/common/api/GoogleApiClient.Builder#enableAutoManage android.support.v4.app.FragmentActivity、com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener))は、[documentation](https:// developers)で説明されているように接続を管理する最も簡単な方法です。 google.com/android/reference/com/google/android/gms/common/api/GoogleApiClient)。 – Teyam

+0

詳細については、[Google APIへのアクセス](https://developers.google.com/android/guides/api-client)も参照してください。 – Teyam

+0

@Teyamええ、問題を解決したようです。 – Nephilim

答えて

0

問題の最初の部分は、上記のコメントの素敵な人々によって解決されました。 (enableAutoManage)

ファイルストリームをIntentSenderから取得するには、OnActivityResultメソッドを編集します。

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    System.out.println("ONACTIVITY RESULT"); 
    System.out.println("REQUEST CODE" + requestCode); 
    // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...); 
    if (requestCode == RC_SIGN_IN) { 
     GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); 
     handleSignInResult(result); 
     System.out.println("GOOGLE SIGN IN"); 
    } 
    if(requestCode == 2){ 

      try{ 
       mDriveID = data.getParcelableExtra(OpenFileActivityBuilder.EXTRA_RESPONSE_DRIVE_ID); 
       System.out.println("ONACTIVITY DRIVE ID " + mDriveID); 

      } 
      catch (NullPointerException e) { 
      } 

    } 
} 

onActivityResultsは、Googleドライブの使用が完了するたびに実行されます(わからないと思います)。したがって、IntentSenderを他の目的で起動する場合は、エラーをキャッチする必要があります。これは最も簡潔な答えではありませんが、うまくいきました。

関連する問題