Как «закрыть» Webview при возвращении к моей активности? - PullRequest
2 голосов
/ 31 января 2012

После аутентификации из моего приложения отображается новое окно, которое позже перенаправляет обратно в приложение. Тогда onNewIntent () вызывается в моей деятельности. Но при выборе возврата к моему приложению веб-страница Twitter все равно отображается. Страница Twitter с перенаправлением назад в приложение не должна отображаться. Как закрыть веб-просмотр в Твиттере?

Ответы [ 3 ]

0 голосов
/ 21 февраля 2012

Я вызываю этот метод из своей деятельности

public void askOAuth(Context context,Handler handler) {
    _msg = new Message();
    _msg.arg1 = AUTHORISE_TWITTER_APP;
    mContext=context;
    this.handler=handler;
    consumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY,CONSUMER_SECRET);
    provider = new DefaultOAuthProvider(
        "http://twitter.com/oauth/request_token",
        "http://twitter.com/oauth/access_token",
        "http://twitter.com/oauth/authorize");//
    //provider.setOAuth10a(true);
    String authUrl = provider.retrieveRequestToken(consumer,CALLBACK_URL);
    mContext.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl)));
}

Это откроет веб-страницу (страницу в Твиттере, перенаправляющую обратно на мою активность). После этого он вызывает onNewIntent() функцию моей активности, и отображается активность, но когда я нажимаю кнопку «Назад», он снова показывает страницу Twitter. Теперь моя проблема заключается в том, как закрыть эту страницу Twitter

0 голосов
/ 10 января 2013

Я предлагаю НЕ запустить "authURL" в новом окне веб-браузера.Что я предпочитаю делать лично, так это запускать новую активность, которая содержит WebView, и передавать URL-адрес этой активности.Таким образом, вам легче управлять навигацией в приложении во время процесса аутентификации Oauth.Поэтому вместо этого:

String authUrl = provider.retrieveRequestToken(consumer,CALLBACK_URL);
mContext.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl)));

Я бы сделал это вместо:

Intent intent = new Intent(mContext, YourActivityWithAWebView.class);
intent.putExtra("AUTH_URL", authUrl);
startActivity(intent);

Затем в вашем WebView вы можете использовать метод shouldOverrideUrlLoading () для получения URL-адреса VERIFIER иполучите ваш Oauth Verifier.

Надеюсь, это поможет!

0 голосов
/ 06 февраля 2012

Новое окно - активность? Если это так, из вашего основного вида деятельности позвоните startActivityForResult() и выполните обратные вызовы.

Когда ваш обратный вызов срабатывает, вы можете при необходимости перезагрузить веб-просмотр.

Вы также можете реструктурировать свое приложение так, чтобы onCreate() вашей основной деятельности был достаточно умным, чтобы не показывать старый результат в веб-просмотре.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...