2016-07-30 61 views
0

我在我的應用中使用Google Drive REST api v3。當應用程序啓動後,用戶將登錄到他/她的Google帳戶並進行身份驗證。 當用戶啓動這個意圖如何在Android中使用Intent.ACTION_VIEW時保留Google Drive身份驗證?

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(googleDriveFileUrl)); 

而且可以說,用戶從發射挑選谷歌雲端硬盤應用程序,現在在對話框中的標誌彈出,並要求重新登錄。 是否有可能讓用戶使用同一個帳戶,以便新活動不再要求登錄?

回答

1

有2種方式validate帳戶authentication

  • 設備上沒有註冊帳戶的電子郵件

GoogleApiClient GAC = new GoogleApiClient.Builder(context) //.setAccountName(email) .addApi(Drive.API) .addScope(Drive.SCOPE_FILE) .addConnectionCallbacks(...) .addOnConnectionFailedListener(...) .build();

谷歌Play服務,會彈出account picker對話框,讓你選擇有效的帳戶或創建一個新帳戶。

  • 在設備上指定有效帳戶的電子郵件

GoogleApiClient GAC = new GoogleApiClient.Builder(context) .setAccountName(email) .addApi(Drive.API) .addScope(Drive.SCOPE_FILE) .addConnectionCallbacks(...) .addOnConnectionFailedListener(...) .build();

您必須通過帳戶選擇器來使用該設備的註冊者之一:

<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
... 
static final int REQ_ACCPICK = 999; 
... 
startActivityForResult(AccountPicker.newChooseAccountIntent(null, null, 
new String[]{GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE}, true, null, null, null, null), REQ_ACCPICK); 
... 
@Override 
protected void onActivityResult(int request, int rslt, Intent data) { 
if (
request == REQ_ACCPICK && 
rslt == RESULT_OK && 
data != null && data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME) != null 
) 
email = data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME); 

下面是一個示例演示應用程序其中討論require sccount pickhttps://github.com/seanpjanson/GDAADemo/blob/master/app/src/main/java/com/spjanson/gdaademo/MainActivity.java

+0

良好的信息,但仍然不會工作,當我使用這樣的意圖 String VideoUrl =「https://drive.google.com/file/d/FILE_ID/view」; Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(videoUrl)); intent.setPackage(「com.google.android.apps.docs」); startActivity(intent); Google雲端硬盤應用會要求重新選擇一個帳戶 – Ragnar

+0

如果您發現更好的答案,請將其發佈爲答案 –

相關問題