Я реализую часть OAuth некоторых твиттерных работ, но мне трудно получить обратный вызов там, где я ожидаю. Я отправляю пользователя в браузер для авторизации приложения, но обратный вызов запускает новое действие, а не возвращается к активности, которая его отправила. С эмулятором, задняя стек выглядит следующим образом:Android Twitter OAuth callback
TwitterActivity -> Вместо этого старта, я хочу, чтобы вернуться к исходному один
BrowserActivity
TwitterActivity -> Это посылает запрос браузер
у меня есть SingleTop набор для деятельности:
<activity
android:name=".TwitterSearchActivity"
android:theme="@style/Theme.Sherlock.Light"
android:configChanges="orientation"
android:launchMode="singleTop" >
<!-- Used for OAuth callback -->
<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:host="callback"
android:scheme="twitter-search-callback" />
</intent-filter>
</activity>
Так что я бы ожидать, что вместо того, чтобы получать новая активность была создана, чтобы исходный получал onNewIntent(), но этого не происходит.
Вот код, чтобы запустить браузер в случае важно:
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(token.getAuthenticationURL()));
startActivity(intent);
Проблема с использованием веб-представления заключается в том, что пользователь понятия не имеет, что вы делаете в этом веб-просмотре. Злоумышленник может даже попытаться вырвать пароли пользователей. Люди, которые ценят свою безопасность, вероятно, предпочтут использовать свой стандартный веб-браузер –
Справедливая точка зрения, но как же мне обойти эту проблему? Большинство приложений, которые я видел, которые используют facebook login, имеют веб-просмотр, накладывающийся на собственную активность, не выходя из приложения. – steprobe