2016-10-18 5 views
0

Так что я сейчас работаю над простым приложением Dropbox Gallery, как описано here.Использование вызовов Dropbox сразу после входа в систему

Когда я нажимаю кнопку, мне нужно выбрать учетную запись Dropbox, которую я хочу использовать. Когда я выбрал один Dropbox загружается ненадолго, и я возвращаюсь к предыдущему экрану, где я изначально нажал кнопку «Dropbox-Button».

Когда я нажимаю кнопку снова, я получаю свою галерею по своему желанию. Теперь я хочу избавиться от этого дополнительного клика. Таким образом, пользователь нажимает кнопку «Dropbox» и через короткое время (время входа?) Пользователь может увидеть запрошенную галерею изображений.

Следующий класс является тот, который используется для проверки подлинности, и я не знаю, как я могу осуществить своего рода «OnSuccess» функциональность для этого:

public class Auth { 

    public static void startOAuth2Authentication(Context context, String appKey) { 

     if (!AuthActivity.checkAppBeforeAuth(context, appKey, true /*alertUser*/)) { 
      return; 
     } 

     // Start Dropbox auth activity. 
     String apiType = "1"; 
     String webHost = "www.dropbox.com"; 
     Intent intent = AuthActivity.makeIntent(context, appKey, webHost, apiType); 
     if (!(context instanceof Activity)) { 
      // If starting the intent outside of an Activity, must include 
      // this. See startActivity(). Otherwise, we prefer to stay in 
      // the same task. 
      intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     } 
     context.startActivity(intent); 
    } 

    public static String getOAuth2Token() { 
     Intent data = AuthActivity.result; 

     if (data == null) { 
      return null; 
     } 

     String token = data.getStringExtra(AuthActivity.EXTRA_ACCESS_TOKEN); 
     String secret = data.getStringExtra(AuthActivity.EXTRA_ACCESS_SECRET); 
     String uid = data.getStringExtra(AuthActivity.EXTRA_UID); 

     if (token != null && !token.equals("") && 
       secret != null && !secret.equals("") && 
       uid != null && !uid.equals("")) { 
      return secret; 
     } 

     return null; 
    } 
} 

Спасибо заранее.

ответ

0

Вы можете поймать успешное событие авторизации приложения в onResume, как показано на Dropbox API v2 Java SDK Android example app здесь:

https://github.com/dropbox/dropbox-sdk-java/blob/7ecc15cf0f51d6ae2ba5cdb334aac2c2f3474b87/examples/android/src/main/java/com/dropbox/core/examples/android/DropboxActivity.java#L16

Вот где вы должны назвать getOAuth2Token, чтобы получить маркер доступа от авторизации приложения.

+0

Это то, о чем я думал и в первую очередь, проблема в том, что я не хочу заходить в галерею сразу после того, как я вхожу на экран, где находится «Вход в Dropbox» -Button. Я хочу перейти в галерею, когда нажата кнопка Dropbox. –

0

Хорошо, я решил свою проблему с повторяющимся Runnable, как это:

public class MyActiviry extends BaseActivity { 

    // ... 

    private Handler handler; 
    private Context context; 

    // ... 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     context = this; 
     handler = new Handler(); 

     // ... 
    } 

    // ... 

    public void selectFromDropBox(DropboxImageProvider dropboxImageProvider) { 
     final DropboxImageProvider provider; 

     showLoadingOverlay(); 

     if (dropboxImageProvider == null) { 
      provider = DropboxImageProvider.getInstance(/* ... */); 
     } else { 
      provider = dropboxImageProvider; 
     } 

     handler.post(new Runnable() { 
      @Override 
      public void run() { 
       if (provider.isLoggedIn()) { 
        provider.requestThumbnails((Activity) context); 
       } else { 
        handler.postDelayed(this, 3000L); 
       } 
      } 
     }); 
    } 

    // ... 

} 

Это может быть не самым красивым решением, но это работает для меня.