android判断用户是否已登陆详细代码
16lz
2021-01-23
package com.sanyue.jianzhicompany;import java.lang.ref.WeakReference;import org.android.agoo.client.BaseRegistrar;import org.apache.http.Header;import org.json.JSONException;import org.json.JSONObject;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.os.Handler;import android.os.Message;import com.loopj.android.http.JsonHttpResponseHandler;import com.sanyue.jianzhicompany.convert.UserJSONConvert;import com.sanyue.jianzhicompany.db.Preferences;import com.sanyue.jianzhicompany.http.AsyncHttpResponseHandler;import com.sanyue.jianzhicompany.http.RequestParams;import com.sanyue.jianzhicompany.http.RestClient;import com.sanyue.jianzhicompany.model.User;import com.sanyue.jianzhicompany.utils.Constant;import com.sanyue.jianzhicompany.utils.ToastUtil;import com.umeng.message.PushAgent;import com.umeng.message.UmengRegistrar;/* * * 判断是否登陆 * 是:更新登陆信息 * 否:转到登陆界面登陆 * * */public class SplashActivity extends Activity { private static final long DELAY_MILLIS = 1 * 1000; private static final int MSG_WHAT_STARTMAIN = 1; public static String device_token; private Handler mHandler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); PushAgent mPushAgent = PushAgent.getInstance(SplashActivity.this); device_token = BaseRegistrar.getRegistrationId(SplashActivity.this); //通过“友盟”获取设备信息 PushAgent.getInstance(SplashActivity.this).onAppStart(); mPushAgent.enable(); Preferences.setDeviceToken(device_token); setContentView(R.layout.activity_splash); mHandler = new MyHandler(this); mHandler.sendEmptyMessageDelayed(MSG_WHAT_STARTMAIN, DELAY_MILLIS); if (Preferences.isLogin()) {// 更新登陆信息 getMyInfo(); } } private static class MyHandler extends Handler { WeakReference<SplashActivity> mActivity; MyHandler(SplashActivity activity) { mActivity = new WeakReference<SplashActivity>(activity); } @Override public void handleMessage(Message msg) { SplashActivity theActivity = mActivity.get(); if (theActivity != null) { switch (msg.what) { case MSG_WHAT_STARTMAIN: if (Preferences.isLogin()) {// 更新版本信息 Preferences.updateVersionCode(); theActivity.startActivity(new Intent(theActivity, MainActivity.class)); } else { theActivity.startActivity(new Intent(theActivity, LoginActivity.class)); Preferences.updateVersionCode(); } theActivity.finish(); break; } } } } private void getMyInfo() { RequestParams params = new RequestParams(); int id = Preferences.getAccountId(); String token = Preferences.getToken(); params.put("user_id", id); params.put("version", 1.0); params.put("app_name","android_jianzhi" ); params.put("platform", "android_jianzhi"); params.put("token", token); RestClient.post(Constant.API_GET_COMPANY_INFO, params, new AsyncHttpResponseHandler(getApplicationContext(), new JsonHttpResponseHandler(){ @Override public void onSuccess(int statusCode, Header[] headers, JSONObject response) { // TODO Auto-generated method stub super.onSuccess(statusCode, headers, response); try { if (response.getInt("msg_code") == Constant.CODE_SUCCESS) { User user = UserJSONConvert.convertJsonToItem(response.getJSONObject("data")); ToastUtil.make(SplashActivity.this).show(""+user); Preferences.updateAccountUser(user); } else { ToastUtil.make(SplashActivity.this).show(response.getInt("msg")); } } catch (JSONException e) { e.printStackTrace(); } } })); }}
Preference类:
import org.json.JSONObject;import com.sanyue.jianzhicompany.model.User;import android.content.Context;import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;import android.content.pm.PackageInfo;import android.content.pm.PackageManager.NameNotFoundException;import android.preference.PreferenceManager;import android.telephony.TelephonyManager;public final class Preferences { public static SharedPreferences sSHARED_REFERENCES = null; private static Context sAPPLICATION_CONTEXT; private static String sDEVICE_ID; private static String sVERSION_NAME; private static int sUSER_ID = -1;// 说明没有初始化 public Preferences() { } public static boolean isLogin() { return getAccountId() > 0 ? true : false; } public static boolean isShowWelcome() { try { PackageInfo info = sAPPLICATION_CONTEXT.getPackageManager() .getPackageInfo(sAPPLICATION_CONTEXT.getPackageName(), 0); // 当前版本的版本号 int versionCode = info.versionCode; int saveVersionCode = sSHARED_REFERENCES.getInt("version_code", 0); return versionCode != saveVersionCode; } catch (NameNotFoundException e) { return true; } } public static boolean updateVersionCode() { try { PackageInfo info = sAPPLICATION_CONTEXT.getPackageManager() .getPackageInfo(sAPPLICATION_CONTEXT.getPackageName(), 0); // 当前版本的版本号 int versionCode = info.versionCode; Editor editor = sSHARED_REFERENCES.edit(); editor.putInt("version_code", versionCode); return editor.commit(); } catch (NameNotFoundException e) { return false; } } public static void init(Context context) { if (sSHARED_REFERENCES == null) { sAPPLICATION_CONTEXT = context.getApplicationContext(); sSHARED_REFERENCES = PreferenceManager .getDefaultSharedPreferences(sAPPLICATION_CONTEXT); } } public static SharedPreferences getSharedPreferences() { return sSHARED_REFERENCES; } public static String getDeviceId() { if (sDEVICE_ID == null) { sDEVICE_ID = ((TelephonyManager) sAPPLICATION_CONTEXT.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId(); } return sDEVICE_ID; } public static String getVersionName() { if (sVERSION_NAME == null) { try { PackageInfo info = sAPPLICATION_CONTEXT.getPackageManager() .getPackageInfo(sAPPLICATION_CONTEXT.getPackageName(), 0); // 当前应用的版本名称 sVERSION_NAME = info.versionName; // 当前版本的版本号 // int versionCode = info.versionCode; // 当前版本的包名 // String packageNames = info.packageName; } catch (NameNotFoundException e) { } } return sVERSION_NAME; } /** * 获取当前登录的用户 * * @return 如果已经登录返回User,否则返回null */ public static User getAccountUser() { User user = new User(); sUSER_ID = sSHARED_REFERENCES.getInt("user_id", 0); if (sUSER_ID == 0) { return null; } JSONObject jsonObject; // jsonObject = new JSONObject(sSHARED_REFERENCES.getString( // "user_json", null)); user.setToken(sSHARED_REFERENCES.getString("access_token", null)); user.setUserId(sSHARED_REFERENCES.getInt("user_id", 0)); user.setBindName(sSHARED_REFERENCES.getString("bind_name", null)); return user; } public static boolean setAccountUser(User user, String accessToken) { Editor editor = sSHARED_REFERENCES.edit(); editor.putString("access_token", accessToken); editor.putInt("user_id", user.getUserId());// editor.putString("user_json", user.toJSON().toString()); // TODO json format save if (editor.commit()) { sUSER_ID = user.getUserId(); return true; } return false; } public static boolean setDeviceToken(String device_token){ Editor editor = sSHARED_REFERENCES.edit(); editor.putString("device_token", device_token); if(editor.commit()){ return true; } return false; } public static String getDeviceToken(){ String device_token = sSHARED_REFERENCES.getString("device_token", null); return device_token; } public static boolean userClear() { Editor editor = sSHARED_REFERENCES.edit(); editor.putString("access_token", ""); editor.putInt("user_id", 0); editor.putString("create_time", ""); // TODO json format save if (editor.commit()) { sUSER_ID = 0; return true; } return false; } public static boolean updateAccountUser(User user) { Editor editor = sSHARED_REFERENCES.edit(); editor.putInt("user_id", user.getUserId()); editor.putString("user_json", user.toJSON().toString()); if (editor.commit()) { sUSER_ID = user.getUserId(); return true; } return false; } /** * 获取登录用户的ID * * @return 如果已登录返回用户ID,否则返回0 */ public static int getAccountId() { if (sUSER_ID == -1) { sUSER_ID = sSHARED_REFERENCES.getInt("user_id", 0); } return sUSER_ID; } public static String getToken() { return sSHARED_REFERENCES.getString("access_token", null); }}
更多相关文章
- 《ArcGIS API for Android 案例教程》PDF版本
- android 获取另一个apk的信息
- Android获取手机配置信息
- android去掉标题栏、信息栏、获取屏幕分辨率、图片全屏
- 如何查看Android设备的CPU架构信息
- ionic 自动编译android的release版本
- 【android】如何查看Android设备的CPU架构信息