Android处理登录页面的调用
来源:互联网 发布:疯情书厍手机版新域名 编辑:程序博客网 时间:2024/05/29 03:44
转载地址:http://www.jianshu.com/p/f25395047402
一般涉及到用户登录注册的应用都有这样的需求:
在执行某一项需要登录之后才能操作的任务之前先检查当前用户有没有在应用里登录过,如果没有需要跳转到登录页面进行登录或者注册,在登录成功之后返回来接着执行之前的操作。
问题是,需要检查用户是否登录的触发点很多,为了避免在每个触发点进行重复的工作,可以写这样一个工具类:
第一步:定义工具类,注意,此类继承自Activity,需要设置主题为NoDisplay(见第二步)
public class LoginUtil extends Activity { static LoginCallback mCallback; public interface LoginCallback { void onLogin(); }@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); NavigateUtil.navigateForResult(this, LoginActivity.class, 22);} public static void checkLogin(Context context, LoginCallback callback) { //此处检查当前的登录状态 boolean login = AccountManager.get().isVerify(); if (login) { callback.onLogin(); } else { mCallback = callback; context.startActivityForResult(context, LoginActivity.class, 22); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { finish(); if (resultCode == RESULT_OK) { mCallback.onLogin(); } mCallback = null; }}
- 第二步:AndroidManifest.xml里需要配置此activity主题:
注意:此种方式只适用于v23版本的sdk之前,SDK23版本以后此主题会报错.<activity android:name=".util.LoginUtil" android:theme="@android:style/Theme.NoDisplay"/><activity
An activity without a UI must call finish() before onResume() completes
参见https://commonsware.com/blog/2015/11/02/psa-android-6p0-theme.nodisplay-regression.html
解决办法:
创建主题<style name="NoDisplay" parent="android:Theme.NoDisplay"></style>
所以需要在values-v23文件夹下面新建一个适配主题:
<style name="NoDisplay" parent="android:Theme.Translucent.NoTitleBar"></style>
然后修改AndroidManifest.xml里activity的主题为
<activity android:name=".util.LoginUtil" android:theme="@style/NoDisplay"/><activity
第三步:在你的处理登录的Activity里登录成功之后调用:
setResult(Activity.RESULT_OK); finish();
这样,如果需要登录操作的地方直接调用:
LoginUtil.checkLogin(context,new LoginCallback(){ public void onLogin(){ //TODO 此处写之前的操作代码 }});
文/水底鱼(简书作者)
原文链接:http://www.jianshu.com/p/f25395047402
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
原文链接:http://www.jianshu.com/p/f25395047402
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
0 0
- Android处理登录页面的调用
- 用户登录页面的Enter回车登录处理
- Android登录页面的最佳实践
- Android 跳转至需要登录的页面
- Android 登录页面的广告轮播
- 捕捉网页的windowClose事件,并调用注销登录页面
- 页面计数器对同一登录用户的处理
- android 登录界面处理的几个细节
- Android处理登录的session过期
- Android 调用QQ登录
- Android 登录处理
- frameset、iframe框架登录跳转, 处理session为空的登录页面问题
- frameset中退出登录以及session超时回到登录页面的处理
- 解决 IOS9.0 调用qq2.91SDK登录 只显示web页面而不能调用客户端登录的问题
- 登录页面的样式
- 登录页面的验证
- 登录页面的背景图
- Android登录页面案例(SharedPreferences的使用)
- iOS 打包ipa测试包
- RxJava----使用
- javascript 的 继承(六) 之 寄生组合式继承
- android getSystemService()
- javascript 实现继承的几种方式
- Android处理登录页面的调用
- redis API 和 命令学习网站
- h5第一章第四节
- AsyncTask获取数据库数据
- 如何更新linux系统时间
- skiing(nyoj_10)
- 七步理解深度学习
- 让Source Insight完美支持中文注释
- 【杭电oj】1864 - 最大报销额(01背包)