package com.weikou.beibeivideo.ui.login;
|
|
import android.content.Context;
|
import android.content.Intent;
|
import android.content.SharedPreferences;
|
import android.content.SharedPreferences.Editor;
|
import android.content.pm.PackageInfo;
|
import android.content.pm.PackageManager;
|
import android.os.Bundle;
|
import android.os.Handler;
|
import android.os.Message;
|
import android.util.Log;
|
import android.view.KeyEvent;
|
import android.view.View;
|
import android.view.View.OnClickListener;
|
import android.view.WindowManager;
|
import android.widget.CheckBox;
|
import android.widget.EditText;
|
import android.widget.LinearLayout;
|
import android.widget.TextView;
|
import android.widget.Toast;
|
|
import com.lcjian.library.dialog.DialogUtil;
|
import com.lcjian.library.util.SingleToast;
|
import com.lcjian.library.util.common.DeviceUtil;
|
import com.lcjian.library.util.common.StringUtils;
|
import com.tencent.mm.opensdk.modelmsg.SendAuth;
|
import com.umeng.socialize.UMAuthListener;
|
import com.umeng.socialize.UMShareAPI;
|
import com.umeng.socialize.bean.SHARE_MEDIA;
|
import com.weikou.beibeivideo.BasicTextHttpResponseHandler;
|
import com.weikou.beibeivideo.BeibeiVideoAPI;
|
import com.weikou.beibeivideo.BeibeiVideoApplication;
|
import com.weikou.beibeivideo.R;
|
import com.weikou.beibeivideo.ui.BaseActivity;
|
import com.weikou.beibeivideo.ui.mine.BrowserActivity;
|
import com.weikou.beibeivideo.util.BeibeiConstant;
|
import com.weikou.beibeivideo.util.ConfigUtil;
|
import com.weikou.beibeivideo.util.ui.TopStatusSettings;
|
|
import org.apache.http.Header;
|
import org.json.JSONException;
|
import org.json.JSONObject;
|
|
import java.util.List;
|
import java.util.Map;
|
|
public class LoginActivity extends BaseActivity implements OnClickListener {
|
public static final int RESULT_LOGIN = 10;
|
private LinearLayout ll_login_qq, ll_login_wx;
|
private boolean isTouchLogin;// 用户是否点击登录
|
private String uid;
|
private String loginType = "";// 登录类型 默认为空字符 QQ为1
|
private String openId = "";// 用户第三方登录唯一识别码
|
|
private LinearLayout ll_login_content, ll_third_login;
|
private EditText et_name;
|
private EditText et_pwd;
|
private CheckBox cb_user_agreement;
|
private TextView tv_forget_pwd;
|
private TextView tv_register;
|
private TextView tv_login, tv_other_login, tv_title;
|
|
|
@Override
|
protected void onCreate(Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
//防止截屏攻击风险
|
getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);
|
setContentView(R.layout.act_login);
|
TopStatusSettings.setStatusViewAndDeepColor(this);
|
uid = getSharedPreferences("user", Context.MODE_PRIVATE).getString(
|
"uid", "");
|
ll_login_qq = findViewById(R.id.ll_login_qq);
|
tv_other_login = findViewById(R.id.tv_other_login);
|
tv_title = findViewById(R.id.tv_title);
|
|
findViewById(R.id.ll_login_qq).setOnClickListener(this);
|
findViewById(R.id.ll_login_wx).setOnClickListener(this);
|
findViewById(R.id.login_tv_cancel).setOnClickListener(this);
|
|
ll_login_content = findViewById(R.id.ll_login_content);
|
|
ll_third_login = findViewById(R.id.ll_third_login);
|
|
int w = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
|
int h = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
|
ll_login_content.measure(w, h);
|
|
et_name = (EditText) findViewById(R.id.et_name);
|
et_pwd = (EditText) findViewById(R.id.et_pwd);
|
cb_user_agreement = (CheckBox) findViewById(R.id.cb_user_agreement);
|
tv_forget_pwd = (TextView) findViewById(R.id.tv_forget_pwd);
|
tv_register = (TextView) findViewById(R.id.tv_register);
|
tv_login = (TextView) findViewById(R.id.tv_login);
|
tv_forget_pwd.setOnClickListener(this);
|
tv_register.setOnClickListener(this);
|
tv_login.setOnClickListener(this);
|
tv_other_login.setOnClickListener(this);
|
findViewById(R.id.tv_user_agreement).setOnClickListener(this);
|
findViewById(R.id.tv_privacy_policy).setOnClickListener(this);
|
|
setLoginType(false);
|
}
|
|
private void setLoginType(boolean email) {
|
if (email) {
|
tv_other_login.setVisibility(View.GONE);
|
ll_third_login.setVisibility(View.GONE);
|
ll_login_content.setVisibility(View.VISIBLE);
|
tv_title.setText("其他登录方式");
|
} else {
|
tv_other_login.setVisibility(View.VISIBLE);
|
ll_third_login.setVisibility(View.VISIBLE);
|
ll_login_content.setVisibility(View.GONE);
|
tv_title.setText("账号登录");
|
}
|
}
|
|
@Override
|
public void onClick(View v) {
|
switch (v.getId()) {
|
case R.id.login_tv_cancel:// 取消
|
if (ll_third_login.getVisibility() == View.GONE) {
|
setLoginType(false);
|
} else {
|
onResult(RESULT_CANCELED);
|
}
|
break;
|
case R.id.tv_other_login:
|
if (ConfigUtil.isOnLining(getApplicationContext())) {
|
startActivity(new Intent(this, PhoneLoginActivity.class).putExtra("login", true));
|
finish();
|
} else {
|
setLoginType(true);
|
}
|
break;
|
case R.id.ll_login_qq:// QQ登录
|
if (!cb_user_agreement.isChecked()) {
|
SingleToast.showToast(LoginActivity.this, "选择同意用户协议后方可登录");
|
break;
|
}
|
if (isQQClientAvailable(getApplicationContext())) {
|
loginType = "1";
|
// qq登录逻辑处理 点击登录后需要暂时锁定返回键和返回功能 不然会报错
|
lockBack(true);
|
UMShareAPI.get(LoginActivity.this).getPlatformInfo(LoginActivity.this, SHARE_MEDIA.QQ, authListener);
|
} else {
|
Toast.makeText(LoginActivity.this, "QQ不可用,请查询手机是否安装QQ...", Toast.LENGTH_LONG).show();
|
}
|
break;
|
|
case R.id.ll_login_wx://微信登录
|
if (!cb_user_agreement.isChecked()) {
|
SingleToast.showToast(LoginActivity.this, "选择同意用户协议后方可登录");
|
break;
|
}
|
if (isWXClientAvailable(getApplicationContext())) {
|
loginType = "2";
|
SendAuth.Req req = new SendAuth.Req();
|
req.scope = "snsapi_userinfo";
|
req.state = "buwan";
|
BeibeiVideoApplication.application.mWxApi.sendReq(req);
|
} else {
|
Toast.makeText(LoginActivity.this, "微信不可用,请查询手机是否安装微信...", Toast.LENGTH_LONG).show();
|
}
|
|
break;
|
case R.id.tv_forget_pwd:
|
startActivity(new Intent(LoginActivity.this, ForgetPwdActivity.class));
|
break;
|
case R.id.tv_user_agreement:
|
Intent intent = new Intent(LoginActivity.this, BrowserActivity.class);
|
intent.putExtra("url", BeibeiConstant.USER_AGREEMENT);
|
startActivity(intent);
|
break;
|
case R.id.tv_privacy_policy:
|
Intent intent1 = new Intent(this, BrowserActivity.class);
|
intent1.putExtra("url", BeibeiConstant.PRIVACY_POLICY);
|
startActivity(intent1);
|
break;
|
case R.id.tv_register:
|
startActivity(new Intent(LoginActivity.this, RegisterActivity.class));
|
break;
|
case R.id.tv_login:
|
if (cb_user_agreement.isChecked())
|
emailLogin();
|
else
|
SingleToast.showToast(LoginActivity.this, "选择同意用户协议后方可登录");
|
break;
|
}
|
}
|
|
/**
|
* 判断qq是否可用
|
*/
|
public static boolean isQQClientAvailable(Context context) {
|
List<PackageInfo> pinfo = DeviceUtil.getInstalledPackagesCache(context);
|
if (pinfo != null) {
|
for (int i = 0; i < pinfo.size(); i++) {
|
String pn = pinfo.get(i).packageName;
|
if (pn.equals("com.tencent.mobileqq")) {
|
return true;
|
}
|
}
|
}
|
return false;
|
}
|
|
public static boolean isWXClientAvailable(Context context) {
|
List<PackageInfo> pinfo = DeviceUtil.getInstalledPackagesCache(context);
|
if (pinfo != null) {
|
for (int i = 0; i < pinfo.size(); i++) {
|
String pn = pinfo.get(i).packageName;
|
if (pn.equals("com.tencent.mm")) {
|
return true;
|
}
|
}
|
}
|
return false;
|
}
|
|
UMAuthListener authListener = new UMAuthListener() {
|
@Override
|
public void onStart(SHARE_MEDIA platform) {
|
DialogUtil.show(loadingDialog);
|
}
|
|
|
@Override
|
public void onComplete(SHARE_MEDIA platform, int action, final Map<String, String> data) {
|
DialogUtil.dismiss(loadingDialog);
|
Log.i("mResult", "返回的数据为----" + data);
|
BeibeiVideoAPI.userLogin(LoginActivity.this, uid,
|
data.get("name"), data.get("openid"),
|
data.get("iconurl"),
|
data.get("gender"), data.get("province"), data.get("city"), loginType,
|
new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode,
|
Header[] headers, JSONObject jsonObject)
|
throws Exception {
|
|
Log.i("mResult", "上传数据到服务器成功!");
|
// SingleToast.showToast(LoginActivity.this, "数据上传成功!");
|
// 写入sharedpreference
|
Editor edit = getSharedPreferences("user",
|
Context.MODE_PRIVATE).edit();
|
edit.putString("portrait", data.get("iconurl"));
|
edit.putString("LoginUid",
|
jsonObject.getJSONObject("Data")
|
.getString("LoginUid"));
|
edit.putString("name",
|
data.get("name"));
|
edit.putString("sex",
|
data.get("gender"));
|
edit.commit();
|
|
SingleToast.showToast(LoginActivity.this,
|
"登录成功");
|
onResult(RESULT_OK);
|
}
|
|
@Override
|
public void onFailure(int statusCode,
|
Header[] headers,
|
String responseString,
|
Throwable throwable) {
|
super.onFailure(statusCode, headers,
|
responseString, throwable);
|
SingleToast.showToast(LoginActivity.this,
|
"登录失败");
|
// Log.i("mResult", "上传数据到服务器成功!");
|
}
|
|
@Override
|
public void onFinish() {
|
super.onFinish();
|
DialogUtil.dismiss(loadingDialog);
|
}
|
});
|
}
|
|
@Override
|
public void onError(SHARE_MEDIA platform, int action, Throwable t) {
|
lockBack(false);
|
DialogUtil.dismiss(loadingDialog);
|
Toast.makeText(LoginActivity.this, "失败:" + t.getMessage(), Toast.LENGTH_LONG).show();
|
}
|
|
@Override
|
public void onCancel(SHARE_MEDIA platform, int action) {
|
lockBack(false);
|
DialogUtil.dismiss(loadingDialog);
|
Toast.makeText(LoginActivity.this, "取消了", Toast.LENGTH_LONG).show();
|
}
|
};
|
|
/**
|
* Email登录
|
*/
|
private void emailLogin() {
|
SharedPreferences preferences = getSharedPreferences("user", MODE_PRIVATE);
|
String uid = preferences.getString("uid", "");
|
String name = et_name.getText().toString();
|
String pwd = et_pwd.getText().toString();
|
if (StringUtils.isEmpty(name) || StringUtils.isEmpty(pwd)) {
|
SingleToast.showToast(this, "账号或密码为空!");
|
return;
|
}
|
BeibeiVideoAPI.emailLogin(this, uid, name, pwd, new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
if (jsonObject.optBoolean("IsPost")) {
|
Log.i("mResult", "登录后返回的值为:" + jsonObject.toString());
|
SharedPreferences sp = getSharedPreferences("user", MODE_PRIVATE);
|
Editor edit = sp.edit();
|
edit.putString("portrait", jsonObject.optJSONObject("Data").optString("Portrait"));
|
edit.putString("LoginUid",
|
jsonObject.getJSONObject("Data")
|
.getString("Id"));
|
edit.putString("name",
|
jsonObject.optJSONObject("Data").optString("Nickname"));
|
edit.commit();
|
SingleToast.showToast(LoginActivity.this, "登录成功" + "昵称为:" + jsonObject.optJSONObject("Data").optString("Nickname"));
|
onResult(RESULT_OK);
|
} else {
|
SingleToast.showToast(LoginActivity.this, "登录失败");
|
}
|
}
|
|
@Override
|
public void onStart() {
|
super.onStart();
|
DialogUtil.show(loadingDialog);
|
}
|
|
@Override
|
public void onFinish() {
|
super.onFinish();
|
DialogUtil.dismiss(loadingDialog);
|
}
|
|
@Override
|
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
|
super.onFailure(statusCode, headers, responseString, throwable);
|
SingleToast.showToast(LoginActivity.this, "登录失败");
|
}
|
});
|
|
}
|
|
@Override
|
public void onResume() {
|
super.onResume();
|
if (!StringUtils.isEmpty(getSharedPreferences("user", Context.MODE_PRIVATE).getString("LoginUid", ""))) {
|
onResult(RESULT_OK);
|
}
|
}
|
|
@Override
|
public void onPause() {
|
super.onPause();
|
}
|
|
/**
|
* 锁定返回
|
*/
|
private void lockBack(boolean isSure) {
|
isTouchLogin = isSure;
|
|
}
|
|
@Override
|
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
if (isTouchLogin && keyCode == KeyEvent.KEYCODE_BACK) {
|
return false;
|
}
|
return super.onKeyDown(keyCode, event);
|
}
|
|
@Override
|
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
super.onActivityResult(requestCode, resultCode, data);
|
UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
|
}
|
|
Handler mHandler = new Handler() {
|
@Override
|
public void handleMessage(Message msg) {
|
if (msg.what == 0) {
|
final JSONObject response = (JSONObject) msg.obj;
|
try {
|
Log.i("mResult", "头像路径:----" + response
|
.getString("figureurl_qq_2"));
|
// SingleToast.showToast(LoginActivity.this, "第三方登录成功,开始上传数据!");
|
BeibeiVideoAPI.userLogin(LoginActivity.this, uid,
|
response.getString("nickname"), openId,
|
response.getString("figureurl_qq_2"),
|
response.getString("gender"), response.getString("province"), response.getString("city"), loginType,
|
new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode,
|
Header[] headers, JSONObject jsonObject)
|
throws Exception {
|
Log.i("mResult", "上传数据到服务器成功!");
|
// SingleToast.showToast(LoginActivity.this, "数据上传成功!");
|
// 写入sharedpreference
|
Editor edit = getSharedPreferences("user",
|
Context.MODE_PRIVATE).edit();
|
edit.putString("portrait", response
|
.getString("figureurl_qq_2"));
|
edit.putString("LoginUid",
|
jsonObject.getJSONObject("Data")
|
.getString("LoginUid"));
|
edit.putString("name",
|
response.getString("nickname"));
|
edit.putString("sex",
|
response.getString("gender"));
|
edit.commit();
|
|
SingleToast.showToast(LoginActivity.this,
|
"登录成功");
|
onResult(RESULT_OK);
|
}
|
|
@Override
|
public void onFailure(int statusCode,
|
Header[] headers,
|
String responseString,
|
Throwable throwable) {
|
super.onFailure(statusCode, headers,
|
responseString, throwable);
|
SingleToast.showToast(LoginActivity.this,
|
"登录失败");
|
// Log.i("mResult", "上传数据到服务器成功!");
|
}
|
|
@Override
|
public void onFinish() {
|
super.onFinish();
|
DialogUtil.dismiss(loadingDialog);
|
}
|
});
|
} catch (JSONException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
};
|
|
|
private void onResult(int resultCode) {
|
boolean result = getIntent().getBooleanExtra("result", false);
|
if (result) {
|
Intent intent = new Intent();
|
//把返回数据存入Intent
|
setResult(resultCode, intent);
|
//关闭Activity
|
finish();
|
} else {
|
//关闭Activity
|
finish();
|
}
|
}
|
}
|