Android登录的简单处理

今天整理一下之前在项目中写的关于某些界面需要登录判断处理。这里整理了一个简易的 Demo 模拟一下 登录情况 和 未登录情况 下的界面跳转处理, 效果如图:

以上分别模拟了,未登录和已登录 情况下的 界面跳转和当前界面事件处理。接下来我们来看一下实现方式。
先从核心代码开始看:

public class GoLoginUtil { public static final String CLASSNAME = "className"; public static final int CODE_LOGIN = 1; // 登录成功回调 用于onActivityForResult 判断 /** * 登录成功之后,通过 activityResult 回调到当前界面 * * @param activity * @param intent * @param requestCode */ private static void startActivity(Activity activity, Intent intent, int requestCode) { if (requestCode == -1) { String targetClass = intent.getComponent().getClassName(); // 目标类 intent.putExtra(CLASSNAME, targetClass); } intent.setClass(activity, LoginActivity.class); // 跳转重定向到登录界面 activity.startActivityForResult(intent, requestCode); } /** * 登录成功之后,直接跳转目标 Activity * * @param activity * @param intent */ public static void startActivity(Activity activity, Intent intent) { startActivity(activity, intent, -1); } /** * 登录成功回调到当前界面 * 使用 onActivityResult 方法接收, requestCode = CODE_LOGIN * * @param activity * @param intent */ public static void startActivityForResult(Activity activity, Intent intent) { startActivity(activity, intent, CODE_LOGIN); } }

这里可以看到,最主要的就是第一个 private 修饰的 startActivity 方法,看过 Android Activity 的 startActivity 方法源码的应该知道,它里面其实就是调用的 startActivityForResult(intent , -1) . 所以我们这里也来用一下它的写法。如果 等于 -1 ,那么就说明是有跳转目标 Activity 的,那么我们就通过 Intent.getComponent().getClassName() 来获取目标 Activity 的类名,再次添加到 Intent参数中,用于我们登录成功之后的后续跳转目标。当然,intent 中的其他参数是会一直携带着的,这里不用担心其他参数。 不等于 -1 那么就是要进行 setResult 回调了。所以,我们是通过 requestCode 是否等于 -1 来区分是继续跳转,还是回调当前界面。 工具类中的下面两个方法,就把功能区分开了,这里基本上看着系统源码来的。

然后再来进行一下二次封装,这里就需要判断当前 登录状态了,这里我也是模拟一下登录状态,代码如下:

public class IntentUtil { public static boolean isLogin; // 模拟获取当前用户登录状态。 /** * 需要登录判断 * * @param activity * @param clazz * @param bundle */ public static void startToLogin(Activity activity, Class clazz, Bundle bundle) { Intent intent = new Intent(activity, clazz); if (bundle != null) { intent.putExtras(bundle); } if (isLogin) { activity.startActivity(intent); } else { GoLoginUtil.startActivity(activity, intent); } } /** * 登录成功会有回调 * requestCode = Contants.CODE_LOGIN * * @param activity * @param bundle */ public static void startToLoginResult(Activity activity, Bundle bundle) { Intent intent = new Intent(); if (bundle != null) { intent.putExtras(bundle); } GoLoginUtil.startActivityForResult(activity, intent); } }

写到现在这样,基本上需要进行登录跳转界面的,可以直接调用 startToLogin 方法,根据登录状态进行跳转。至于 startToLoginResult 方法,目前还需要在调用时进行判断一下登录状态,进行区分处理,然后还要在 onActivityForResult 方法中进行回调处理,这个暂时没想到其他好的方法,各位大神如果有什么好的处理方式还请多多指教。

这里还没完呢,我们的登录界面也是需要一定的处理逻辑去进行配合的。我们来看一下怎么去配合:

public class LoginActivity extends FragmentActivity { private String targetClass; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); targetClass = getIntent().getStringExtra(GoLoginUtil.CLASSNAME); // 目标跳转类 } public void onLoginClick(View view) { // 模拟登录成功操作 if (!TextUtils.isEmpty(targetClass)) { // 这里就是执行继续跳转操作 try { Class clazz = Class.forName(targetClass); getIntent().setClass(this, clazz); startActivity(getIntent()); finish(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } else { // 这里是登录成功,回调到之前界面 onActivityForResult()中 方法可根据自己需求处理。。 setResult(RESULT_OK); finish(); } } }

最后来看一下我们的调用方式:

/** * 登录跳转 * * @param view */ public void onClick1(View view) { Bundle bundle = new Bundle(); bundle.putString("content", et_content.getText().toString()); IntentUtil.startToLogin(this, LoginSuccessActivity.class, bundle); } /** * 登录回调 * * @param view */ public void onClick2(View view) { if (!IntentUtil.isLogin) { IntentUtil.startToLoginResult(this, null); } else { tv_text.setText("登录成功"); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode != RESULT_OK) { return; } if (requestCode == CODE_LOGIN) { tv_text.setText("登录成功"); } }

基本上要整理的就这么多。写法上的一些不足,还请各位多多指点。

Demo 地址

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

时间: 2024-09-21 05:32:08

Android登录的简单处理的相关文章

Android 登录处理简单实例(源码下载)

Android 登录处理简单实例 今天整理一下之前在项目中写的关于某些界面需要登录判断处理.这里整理了一个简易的 Demo 模拟一下 登录情况 和 未登录情况 下的界面跳转处理, 效果如图: 以上分别模拟了,未登录和已登录 情况下的 界面跳转和当前界面事件处理.接下来我们来看一下实现方式. 先从核心代码开始看: public class GoLoginUtil { public static final String CLASSNAME = "className"; public st

源代码-Android登录页面的实现

问题描述 Android登录页面的实现 在eclipse里面如何实现登录注册,并且两个页面进行链接,QQ登录和注册页面是怎么实现的? 解决方案 用Android Studio,新建一个LoginActivity,然后自己看,官方的代码,嗯.要是自己写的话,登录:两个EditText,用户名和密码,一个Button点击登录,点击事件为获取两个EditText的信息,发送post请求给服务器,等服务器验证,服务器怎么验证我们不管,交给写服务器的人去做了.其实也就是把你传给他的数据在数据库中查找,对应

Android登录界面的实现代码分享_Android

最近由于项目需要,宝宝好久没搞Android啦,又是因为项目需要,现在继续弄Android,哎,说多了都是泪呀,别的不用多说,先搞一个登录界面练练手,登录界面可以说是Android项目中最常用也是最基本的,如果这个都搞不定,那可以直接去跳21世纪楼啦. 废话不多说,先上效果图了,如果大家感觉还不错,请参考实现代码吧. 相信这种渣渣布局对很多人来说太简单啦,直接上布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk

Android登录界面的实现代码分享

最近由于项目需要,宝宝好久没搞Android啦,又是因为项目需要,现在继续弄Android,哎,说多了都是泪呀,别的不用多说,先搞一个登录界面练练手,登录界面可以说是Android项目中最常用也是最基本的,如果这个都搞不定,那可以直接去跳21世纪楼啦. 废话不多说,先上效果图了,如果大家感觉还不错,请参考实现代码吧. 相信这种渣渣布局对很多人来说太简单啦,直接上布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk

变换-Android登录跳转的问题

问题描述 Android登录跳转的问题 直接看图吧:这是登录前的页面:登录后我想让还回到这个页面,并且上面变换成这个样子(怎么判断是否登录然后变换布局已经搞定了):如图因为这个页面是在tabhost里的我直接跳到这个页面下边的tabhost就没了,如果跳到mainActivity的话该怎么设置tabhost的默认选中值呢:login跳转和tabhost的部分代码如下:这里我有去在MainActivity里声明public static MainActivity instance=this,然后在

Android实现的简单蓝牙程序示例_Android

本文实例讲述了Android实现的简单蓝牙程序.分享给大家供大家参考,具体如下: 我将在这篇文章中介绍了的Android蓝牙程序.这个程序就是将实现把手机变做电脑PPT播放的遥控器:用音量加和音量减键来控制PPT页面的切换. 遥控器服务器端 首先,我们需要编写一个遥控器的服务器端(支持蓝牙的电脑)来接收手机端发出的信号.为了实现这个服务器端,我用到了一个叫做Bluecove(专门用来为蓝牙服务的!)的Java库. 以下是我的RemoteBluetoothServer类: public class

表单验证-小白求指教,登录界面简单验证,真心求指教 ,谢谢了

问题描述 小白求指教,登录界面简单验证,真心求指教 ,谢谢了 求登录界面简单验证用户名英文,不许为空,6到10个字节,如果出错直接拦截,并有提示,这几天试了好多volidator,但是都因为这样那样的原因整不明白,真心求答案, 解决方案 <br> //验证英文<br> function verity(obj) {<br> var parent = /^[A-Za-z]+$/;<br> if (parent.test(obj.value)) {<br&g

急求!android登录密码验证页面源代码

问题描述 急求!android登录密码验证页面源代码 急求!android登录密码验证页面源代码,1369793795@qq.com 解决方案 <?xml version="1.0" encoding="utf-8"?> android:layout_width="match_parent" android:layout_height="match_parent" android:background="

库-哪位大神用android能实现简单图像检索功能呀?

问题描述 哪位大神用android能实现简单图像检索功能呀? 就是在android平台实现拍照存储并提取特征向量,最后与特征库进行比对,得到相同或者类似的图片并输出. 解决方案 用openCV技术可以实现