MainActivity
package com.example.administrator.montow.view; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.Toast; import com.example.administrator.montow.Bean; import com.example.administrator.montow.R; import com.example.administrator.montow.presenter.Login_Presenter; import com.example.administrator.montow.presenter.Sign_Presenter; import com.umeng.socialize.UMAuthListener; import com.umeng.socialize.UMShareAPI; import com.umeng.socialize.bean.SHARE_MEDIA; import com.xys.libzxing.zxing.activity.CaptureActivity; import java.util.Map; public class MainActivity extends AppCompatActivity implements View.OnClickListener,Login_View{ private EditText edit_name; private EditText edit_pass; private Button login_btn; private Button sign_btn; private Login_Presenter login_presenter; private ImageView sao; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); login_presenter = new Login_Presenter(this); initData(); } private void initData() { edit_name = findViewById(R.id.edit_name); edit_pass = findViewById(R.id.edit_pass); login_btn = findViewById(R.id.login_btn); sign_btn = findViewById(R.id.sign_btn); sao = findViewById(R.id.sao); sao.setOnClickListener(this); login_btn.setOnClickListener(this); sign_btn.setOnClickListener(this); login_btn.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { authorization(SHARE_MEDIA.QQ); return false; } }); } private void authorization(SHARE_MEDIA share_media) { UMShareAPI.get(this).getPlatformInfo(this, share_media, new UMAuthListener() { @Override public void onStart(SHARE_MEDIA share_media) { Log.d("TAG", "onStart " + "授权开始"); } @Override public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) { Log.d("TAG", "onComplete " + "授权完成"); //sdk是6.4.4的,但是获取值的时候用的是6.2以前的(access_token)才能获取到值,未知原因 String uid = map.get("uid"); String openid = map.get("openid");//微博没有 String unionid = map.get("unionid");//微博没有 String access_token = map.get("access_token"); String refresh_token = map.get("refresh_token");//微信,qq,微博都没有获取到 String expires_in = map.get("expires_in"); String name = map.get("name"); String gender = map.get("gender"); String iconurl = map.get("iconurl"); Toast.makeText(getApplicationContext(), "name=" + name + ",gender=" + gender, Toast.LENGTH_SHORT).show(); } @Override public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) { Log.d("TAG", "onError " + "授权失败"); } @Override public void onCancel(SHARE_MEDIA share_media, int i) { Log.d("TAG", "onCancel " + "授权取消"); } }); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.sign_btn: Intent intent = new Intent(v.getContext(),Main2Activity.class); startActivity(intent); break; case R.id.login_btn: String name = edit_name.getText().toString(); String pass = edit_pass.getText().toString(); login_presenter.login(name,pass); break; case R.id.sao: Intent intent1 = new Intent(MainActivity.this, CaptureActivity.class); startActivity(intent1); } } @Override public void loginSuccess(Bean bean) { runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(MainActivity.this,"登录成功",Toast.LENGTH_SHORT).show(); } }); } @Override public void loginError(String error) { runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(MainActivity.this,"登录失败",Toast.LENGTH_SHORT).show(); } }); } }
Main2Activity
package com.example.administrator.montow.view; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.Toast; import com.example.administrator.montow.Bean; import com.example.administrator.montow.R; import com.example.administrator.montow.SginBean; import com.example.administrator.montow.presenter.Sign_Presenter; public class Main2Activity extends AppCompatActivity implements View.OnClickListener,Sign_View{ private Button signButton; private ImageView fanhui; private EditText sign_name; private EditText sign_pass; private Sign_Presenter sign_presenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); sign_presenter = new Sign_Presenter(this); initData(); } private void initData() { signButton = findViewById(R.id.signButton); fanhui = findViewById(R.id.fanhui); sign_name = findViewById(R.id.sign_name); sign_pass = findViewById(R.id.sign_pass); fanhui.setOnClickListener(this); signButton.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.fanhui: Intent intent = new Intent(v.getContext(),MainActivity.class); startActivity(intent); break; case R.id.signButton: String names = sign_name.getText().toString(); String passd = sign_pass.getText().toString(); sign_presenter.sign(names,passd); break; } } @Override public void signSuccess(SginBean bean) { runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(Main2Activity.this,"注册成功",Toast.LENGTH_SHORT).show(); startActivity(new Intent(Main2Activity.this,MainActivity.class)); } }); } @Override public void signError(String error) { runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(Main2Activity.this,"注册失败",Toast.LENGTH_SHORT).show(); } }); } }
LoginView
package com.example.administrator.montow.view; import com.example.administrator.montow.Bean; /** * Created by Administrator on 2018/6/15. */ public interface Login_View { void loginSuccess(Bean bean); void loginError(String error); }
SignView
package com.example.administrator.montow.view; import com.example.administrator.montow.Bean; import com.example.administrator.montow.SginBean; /** * Created by Administrator on 2018/6/15. */ public interface Sign_View { void signSuccess(SginBean bean); void signError(String error); }
LoginModel
package com.example.administrator.montow.model; import com.example.administrator.montow.Bean; import com.google.gson.Gson; import java.io.IOException; import okhttp3.Call; import okhttp3.Callback; import okhttp3.FormBody; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; /** * Created by Administrator on 2018/6/15. */ public class Login_Model { public void login(String name, String pass, final ILoginModeCallback iLoginModeCallback) { OkHttpClient okHttpClient = new OkHttpClient.Builder() .build(); RequestBody requestBody = new FormBody.Builder() .add("source","android") .add("mobile",name) .add("password",pass) .build(); Request request = new Request.Builder() .url("https://www.zhaoapi.cn/user/login") .post(requestBody) .build(); Call call = okHttpClient.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { //失败 } @Override public void onResponse(Call call, Response response) throws IOException { String json = response.body().string(); Bean bean = new Gson().fromJson(json, Bean.class); String code = bean.getCode(); String msg = bean.getMsg(); if("0".equalsIgnoreCase(code)){ if(iLoginModeCallback!=null){ iLoginModeCallback.onsignSuccess(bean); } }else{ if(iLoginModeCallback!=null){ iLoginModeCallback.onsignFaild(msg); } } } }); } public interface ILoginModeCallback{ void onsignSuccess(Bean bean); void onsignFaild(String error); }
}
SignModel
package com.example.administrator.montow.model; import com.example.administrator.montow.SginBean; import com.google.gson.Gson; import java.io.IOException; import okhttp3.Call; import okhttp3.Callback; import okhttp3.FormBody; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; /** * Created by Administrator on 2018/6/15. */ public class Sign_Model{ public void sign(String names, String passd, final ILoginModeCallback iLoginModeCallback){ OkHttpClient okHttpClient = new OkHttpClient.Builder() .build(); RequestBody requestBody = new FormBody.Builder() .add("source","android") .add("mobile",names) .add("password",passd) .build(); Request request = new Request.Builder() .url("https://www.zhaoapi.cn/user/reg") .post(requestBody) .build(); Call call = okHttpClient.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { //失败 } @Override public void onResponse(Call call, Response response) throws IOException { String json = response.body().string(); SginBean bean = new Gson().fromJson(json, SginBean.class); String code = bean.getCode(); String msg = bean.getMsg(); if("0".equalsIgnoreCase(code)){ if(iLoginModeCallback!=null){ iLoginModeCallback.onsignSuccess(bean); } }else{ if(iLoginModeCallback!=null){ iLoginModeCallback.onsignFaild(msg); } } } }); } public interface ILoginModeCallback{ void onsignSuccess(SginBean bean); void onsignFaild(String error); } }
Application
package com.example.administrator.montow.model; import android.app.Application; import com.umeng.socialize.Config; import com.umeng.socialize.PlatformConfig; import com.umeng.socialize.UMShareAPI; /** * Created by Administrator on 2018/6/18. */ public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); UMShareAPI.get(this);//初始化sdk // Config.DEBUG=true; } { PlatformConfig.setQQZone("100424468","c7394704798a158208a74ab60104f0ba"); } }
LoginPresennter
package com.example.administrator.montow.presenter; import android.util.Log; import com.example.administrator.montow.Bean; import com.example.administrator.montow.model.Login_Model; import com.example.administrator.montow.model.Sign_Model; import com.example.administrator.montow.view.Login_View; import com.example.administrator.montow.view.Sign_View; /** * Created by Administrator on 2018/6/15. */ public class Login_Presenter { private static Login_Model login_model; private static Login_View mlogin_view; public Login_Presenter(Login_View login_view) { login_model = new Login_Model(); mlogin_view= login_view; } public static void login(String name, String pass) { if(name==null){ if(mlogin_view!=null){ mlogin_view.loginError("手机号不能为空"); } return; } login_model.login(name, pass, new Login_Model.ILoginModeCallback() { @Override public void onsignSuccess(Bean bean) { mlogin_view.loginSuccess(bean); } @Override public void onsignFaild(String error) { mlogin_view.loginError(error); } }); } }SignPresenter
package com.example.administrator.montow.presenter; import android.util.Log; import android.widget.EditText; import com.example.administrator.montow.Bean; import com.example.administrator.montow.SginBean; import com.example.administrator.montow.model.Sign_Model; import com.example.administrator.montow.view.Login_View; import com.example.administrator.montow.view.Sign_View; /** * Created by Administrator on 2018/6/15. */ public class Sign_Presenter{ private static Sign_View msign_view; private static Sign_Model sign_model; private static Login_View mlogin_view; public Sign_Presenter(Sign_View sign_view) { msign_view = sign_view; sign_model = new Sign_Model(); } public static void sign(final String names, final String passd) { if(names==null){ if(msign_view!=null){ msign_view.signError("手机号不能为空"); } return; } sign_model.sign(names, passd, new Sign_Model.ILoginModeCallback() { @Override public void onsignSuccess(SginBean bean) { if(msign_view!=null){ Log.e("TAG",names+""+passd); msign_view.signSuccess(bean); } } @Override public void onsignFaild(String error) { if(msign_view!=null){ msign_view.signError(error); } } }); } }Bean
package com.example.administrator.montow; /** * Created by Administrator on 2018/6/15. */ public class Bean { private String msg; private String code; private DataBean data; public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public DataBean getData() { return data; } public void setData(DataBean data) { this.data = data; } public static class DataBean { /** * age : null * appkey : b21a59a43435efa6 * appsecret : 06FE82A39363354CCB49A9FBD2B0B841 * createtime : 2018-01-30T15:06:37 * email : null * fans : null * follow : null * gender : null * icon : null * latitude : null * longitude : null * mobile : 15501186623 * money : null * nickname : null * password : 8F669074CAF5513351A2DE5CC22AC04C * praiseNum : null * token : F59DAFABFD3392862082B61174D823A6 * uid : 10446 * userId : null * username : 15501186623 */ private Object age; private String appkey; private String appsecret; private String createtime; private Object email; private Object fans; private Object follow; private Object gender; private Object icon; private Object latitude; private Object longitude; private String mobile; private Object money; private Object nickname; private String password; private Object praiseNum; private String token; private int uid; private Object userId; private String username; public Object getAge() { return age; } public void setAge(Object age) { this.age = age; } public String getAppkey() { return appkey; } public void setAppkey(String appkey) { this.appkey = appkey; } public String getAppsecret() { return appsecret; } public void setAppsecret(String appsecret) { this.appsecret = appsecret; } public String getCreatetime() { return createtime; } public void setCreatetime(String createtime) { this.createtime = createtime; } public Object getEmail() { return email; } public void setEmail(Object email) { this.email = email; } public Object getFans() { return fans; } public void setFans(Object fans) { this.fans = fans; } public Object getFollow() { return follow; } public void setFollow(Object follow) { this.follow = follow; } public Object getGender() { return gender; } public void setGender(Object gender) { this.gender = gender; } public Object getIcon() { return icon; } public void setIcon(Object icon) { this.icon = icon; } public Object getLatitude() { return latitude; } public void setLatitude(Object latitude) { this.latitude = latitude; } public Object getLongitude() { return longitude; } public void setLongitude(Object longitude) { this.longitude = longitude; } public String getMobile() { return mobile; } public void setMobile(String mobile) { this.mobile = mobile; } public Object getMoney() { return money; } public void setMoney(Object money) { this.money = money; } public Object getNickname() { return nickname; } public void setNickname(Object nickname) { this.nickname = nickname; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Object getPraiseNum() { return praiseNum; } public void setPraiseNum(Object praiseNum) { this.praiseNum = praiseNum; } public String getToken() { return token; } public void setToken(String token) { this.token = token; } public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } public Object getUserId() { return userId; } public void setUserId(Object userId) { this.userId = userId; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } } }
SignBean
package com.example.administrator.montow; /** * Created by Administrator on 2018/6/16. */ public class SginBean { /** * msg : 注册成功 * code : 0 */ private String msg; private String code; public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } }
build.gradle
apply plugin: 'com.android.application' android { compileSdkVersion 26 defaultConfig { applicationId "com.example.administrator.montow" minSdkVersion 15 targetSdkVersion 22 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'com.android.support:appcompat-v7:26.1.0' implementation 'com.android.support.constraint:constraint-layout:1.1.1' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' implementation 'com.google.code.gson:gson:2.8.2' implementation 'com.squareup.okhttp3:okhttp:3.10.0' implementation project(':libzxing') implementation files('libs/SocialSDK_QQ_Simplify.jar') implementation files('libs/SocialSDK_Sina_Simplify.jar') implementation files('libs/SocialSDK_WeChat_Simplify.jar') implementation files('libs/umeng_shareboard_widget.jar') implementation files('libs/umeng_social_api.jar') implementation files('libs/umeng_social_net.jar') implementation files('libs/umeng_social_shareboard.jar') implementation files('libs/umeng_social_shareview.jar') implementation files('libs/umeng_social_tool.jar') } 清单
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.administrator.montow"> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:name=".model.MyApplication" android:theme="@style/AppTheme"> <activity android:name=".view.MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".view.Main2Activity" /> <activity android:name="com.umeng.qq.tencent.AuthActivity" android:launchMode="singleTask" android:noHistory="true"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="tencent100424468" /> </intent-filter> </activity> <activity android:name="com.umeng.qq.tencent.AssistActivity" android:configChanges="orientation|keyboardHidden|screenSize" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <meta-data android:name="code" android:value="5a73de3eb27b0a195c000065" /> </application> </manifest>