Android问题


Q 1. 全机型,全系统兼容吗?

S : 本产品依赖第三方运营商SDK,联通SDK最低可兼容Android 5.0,因此移动、电信用户最低可支持Android 4.0,联通用户最低可支持Android 5.0


Q 2. 只有一个回调,该怎样处理页面切换等逻辑呢?

S :页面的所有状态都有错误码输出,可以根据错误码来实现。


Q 3. 怎样控制关闭授权页的时机?

S :在requestToken()方法执行完成之后,根据错误码来自主实现关闭授权页的时机,当请求成功之后需要页面跳转的时候是关闭授权页的时机。开发者自定义控件的事件发生时也是关闭授权页的时机。


Q 4. 授权页面的沉浸式状态栏或者设置状态栏的颜色怎么实现呢?

S :在0.6.1版本之后,可以通过setStatusBar方法设置。


Q 5. OneLogin与OnePass一起使用包冲突错误怎么解决?

S :在OnePass的demo中有具体的脚本实现,详见OnePass项目。


Q 6. 怎样实现横屏呢?

S :在页面初始化时调用OneLoginHelper.with().setRequestedOrientation(MainActivity.this, false)即可。然后页面的偏移量可以在OneLoginThemeConfig中进行配置。


Q 7. 怎样设置主题?

S :在清单文件中的activity中进行相关配置。0.9.0版本之后,需要在清单文件中添加:

<activity
android:name="com.geetest.onelogin.activity.OneLoginActivity"
tools:replace="android:theme"
android:theme="@style/Theme.ActivityDialogStyle" />
<activity
android:name="com.geetest.onelogin.activity.OneLoginWebActivity"
tools:replace="android:theme"
android:theme="@style/Theme.ActivityDialogStyle" />


Q 8. 如何设置授权页面的Logo?

S :在0.6.1版本之后,可以通过setLogoImgView方法设置。


Q 9. 怎样隐藏返回图标?

S :在0.6.1版本之后,可以通过setAuthNavReturnImgView方法设置。


Q 10. 怎样实现第三方登录的自定义?

S :在Demo中有详细的方法展示,在这里展示部分代码。

private void initLogin() {
LayoutInflater inflater1 = LayoutInflater.from(context);
RelativeLayout relativeLayout = (RelativeLayout) inflater1.inflate(R.layout.relative_item_view, null);
RelativeLayout.LayoutParams layoutParamsOther = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
layoutParamsOther.setMargins(0,dip2px(context, 430), 0, 0);
layoutParamsOther.addRule(RelativeLayout.CENTER_HORIZONTAL);
relativeLayout.setLayoutParams(layoutParamsOther);
ImageView weixin = relativeLayout.findViewById(R.id.weixin);
ImageView qq = relativeLayout.findViewById(R.id.qq);
ImageView weibo = relativeLayout.findViewById(R.id.weibo);
weixin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "微信登录", Toast.LENGTH_SHORT).show();
}
});
qq.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "qq登录", Toast.LENGTH_SHORT).show();
}
});
weibo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "微博登录", Toast.LENGTH_SHORT).show();
}
});
OneLoginHelper.with().addOneLoginRegisterViewConfig("title_button", new AuthRegisterViewConfig.Builder()
.setView(relativeLayout)
.setRootViewId(AuthRegisterViewConfig.RootViewId.ROOT_VIEW_ID_BODY)
.setCustomInterface(new CustomInterface() {
@Override
public void onClick(Context context) {
Toast.makeText(context, "动态注册的其他按钮", Toast.LENGTH_SHORT).show();
}
})
.build()
);
}


Q 11. 怎样设置弹窗形式?

S :在0.6.1版本之后,可以通过setDialogTheme方法设置。0.9.0版本之后,如果不改theme,则只需要这一步即可。


Q 12. 授权页面弹框背景为黑色,如何设置为透明?

S :授权页面以对话框形式弹出时,支持通过主题设置背景样式。未设置主题的情况下,默认背景为黑色,可参考以下方式设置为透明背景:

在主题配置文件styles.xml中增加对话框主题样式:

<style name="Theme.ActivityDialogStyle" parent="Theme.AppCompat.Light.NoActionBar"> <!--背景透明-->
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowIsTranslucent">true</item> <!--dialog的整个屏幕的背景是否有遮障层-->
<item name="android:backgroundDimEnabled">true</item>
</style>

在AndroidManifest.xml中给授权页面应用主题样式(参考问题7):

<activity
android:name="com.geetest.onelogin.activity.OneLoginActivity"
...
android:theme="@style/Theme.ActivityDialogStyle" />


Q 13. OneLoginThemeConfig使用注意事项?

S :注意事项:

  1. 配置项的图片,地址都应为drawable目录下。
  2. OffsetY与OffsetY_B两者必须有一个值为0,偏移量以不为0的方向作为基准。