Sut*_*rth 3 android oauth-2.0 fitbit chrome-custom-tabs
我正在使用 chrome 自定义选项卡从自定义选项卡的重定向中获取 oAuth 连接请求,我在应用程序中成功重定向。唯一的问题是 chrome 自定义选项卡在重定向时不会关闭,留在堆栈中。
在自定义选项卡中启动 url 的代码如下。
customTabsIntent = new CustomTabsIntent.Builder(mCustomTabsSession)
.setToolbarColor(ContextCompat.getColor(getBaseContext(), R.color.colorPrimary))
.setStartAnimations(getBaseContext(),
R.anim.slide_in_right, R.anim.slide_out_left)
.setExitAnimations(getBaseContext(),
android.R.anim.slide_in_left, android.R.anim.slide_out_right)
.setShowTitle(true)
.build();
customTabsIntent.intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
customTabsIntent.intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
customTabsIntent.launchUrl(Settings_Activity.this, Uri.parse(fitbitUrlBuilder.toString()));
Run Code Online (Sandbox Code Playgroud)
我尝试在清单文件中使用“singleTask”和“singleInstance”,但问题仍然存在。
如果我只使用意图“FLAG_NO_HISTORY”,它就可以工作。但是我需要强制使用“FLAG_ACTIVITY_NEW_TASK”,因为存在某种边缘情况,例如,如果特定站点的令牌被删除,我们尝试重新验证浏览器在 android 7.1 版上崩溃,需要再次手动启动应用程序。
对此的任何帮助表示赞赏。
我在尝试对 oAuth 提供者进行身份验证时遇到了同样的问题。我使用自定义选项卡 25.3.1 使代码工作,并使用addFlags代替setFlags:
构建.gradle
dependencies {
...
compile 'com.android.support:customtabs:25.3.1'
}
Run Code Online (Sandbox Code Playgroud)
我的活动.java
public void dispatchAuthIntent() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
// Use Chrome Custom Tabs
CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder()
.setToolbarColor(ContextCompat.getColor(getBaseContext(), R.color.brand_blue_dark))
.setShowTitle(true)
.build();
customTabsIntent.intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
customTabsIntent.intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
customTabsIntent.launchUrl(this, Uri.parse(url));
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2635 次 |
| 最近记录: |