Кнопка возврата Android с браузером oauth возвращается в браузер - PullRequest
0 голосов
/ 27 февраля 2012

При первой публикации вопроса, и я извиняюсь, есть масса вопросов по этому вопросу, но после попытки многих вариантов я не могу заставить это работать.

У меня есть приложение для Twitter, котороеНа главном экране есть кнопка, которая запрашивает oauth доступ к Твиттеру через стандартное приложение браузера, а затем возвращает на главный экран.Если я нажму кнопку «Назад», откроется браузерное приложение с сайтом Twitter.Я пробовал noHistory в файле манифеста, и при запуске намерения FLAG_ACTIVITY_NO_HISTORY, а также FLAG_ACTIVITY_CLEAR_TOP и Intent.FLAG_ACTIVITY_SINGLE_TOP во многих сценариях безуспешно.

Вот мой последний код:

file

<activity android:name=".oauth" 
                  android:label="@string/oauth_name"
                  android:noHistory="true"
                  >
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="tm" android:host="twitt" />

            </intent-filter>
        </activity> 
<activity   android:name="com.tweetymanagerpro.Home" 
                    android:label="@string/app_name"
                    android:theme="@android:style/Theme.NoTitleBar"
                    android:windowSoftInputMode="stateHidden|adjustPan">
                <intent-filter>
                    <action android:name="android.intent.action.VIEW" />
                </intent-filter>
          </activity>

В домашнем задании я вызываю oauth следующим образом:

Intent settingsActivity = new Intent(getBaseContext(), oauth.class);
                settingsActivity.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
                startActivity(settingsActivity);

Затем, в oauth.onCreate (), я вызываю твиттер-URL

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl));
            intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);

            this.startActivity(intent);

Далее, в oauth.onResume () я обрабатываю токены и т. Д., А затем снова запускаю Домой

Intent i = new Intent(this, Home.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(i);

Соединение с твиттером работает отлично, просто сейчас дома, если я нажимаю кнопку "Назад", требуетсяя вернулся в браузер, где он аутентифицируется с помощью твиттера.

Ответы [ 2 ]

1 голос
/ 20 октября 2012

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

Веб-страница oauth, когда она вызывает свой обратный вызов, фактически заменит себя в веб-представлении, где ваш WebViewClient может перехватить этот ожидаемый URL-адрес, обработать результаты и завершить () веб-просмотр (удалив его из стека активности). .

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

Является ли активность oauth фактической активностью браузера? Если это так, вы можете вызвать finish() после того, как начнете в нем Домашнюю активность, чтобы удалить ее из стека активности.

Если нет, то, возможно, если ваша Домашняя активность началась с вашей активности oauth, ваш класс oauth добавляет еще один флаг в ваше намерение. Поэтому, если ваш домашний класс видит это намерение, он может переопределить нажатие клавиши BACK и не выполнять действия по умолчанию (завершить и возобновить работу в браузере).

...