Commit e09ea0347ecbfa0b7dc9871a8882f9538ab887ad

Authored by 姚旭斌
2 parents e2485424 2e560dbc

Merge branch 'developer' into yxb_dev

# Conflicts:
#	app/src/main/java/com/shunzhi/parent/presenter/loginandregister/LoginAndRegisterPresenter.java
#	app/src/main/java/com/shunzhi/parent/ui/activity/mywebview/WebViewActivity.java
#	app/src/main/java/com/shunzhi/parent/ui/fragment/consult/ConsultOneLevelFragment.java
#	app/src/main/res/layout/activity_web_view.xml
.idea/modules.xml
@@ -4,7 +4,10 @@ @@ -4,7 +4,10 @@
4 <modules> 4 <modules>
5 <module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" /> 5 <module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" />
6 <module fileurl="file://$PROJECT_DIR$/mvpsdk/mvpsdk.iml" filepath="$PROJECT_DIR$/mvpsdk/mvpsdk.iml" /> 6 <module fileurl="file://$PROJECT_DIR$/mvpsdk/mvpsdk.iml" filepath="$PROJECT_DIR$/mvpsdk/mvpsdk.iml" />
  7 + <module fileurl="file://E:\parentwork\parentWorkHolper.iml" filepath="E:\parentwork\parentWorkHolper.iml" />
  8 + <module fileurl="file://F:\parentwork\parentWorkHolper.iml" filepath="F:\parentwork\parentWorkHolper.iml" />
7 <module fileurl="file://$PROJECT_DIR$/parentwork.iml" filepath="$PROJECT_DIR$/parentwork.iml" /> 9 <module fileurl="file://$PROJECT_DIR$/parentwork.iml" filepath="$PROJECT_DIR$/parentwork.iml" />
  10 + <module fileurl="file://F:\parentWorkHolper\parentwork.iml" filepath="F:\parentWorkHolper\parentwork.iml" />
8 <module fileurl="file://$PROJECT_DIR$/roundedimageview-2.2.1/roundedimageview-2.2.1.iml" filepath="$PROJECT_DIR$/roundedimageview-2.2.1/roundedimageview-2.2.1.iml" /> 11 <module fileurl="file://$PROJECT_DIR$/roundedimageview-2.2.1/roundedimageview-2.2.1.iml" filepath="$PROJECT_DIR$/roundedimageview-2.2.1/roundedimageview-2.2.1.iml" />
9 </modules> 12 </modules>
10 </component> 13 </component>
1 <?xml version="1.0" encoding="UTF-8"?> 1 <?xml version="1.0" encoding="UTF-8"?>
2 <project version="4"> 2 <project version="4">
3 <component name="VcsDirectoryMappings"> 3 <component name="VcsDirectoryMappings">
4 - <mapping directory="$PROJECT_DIR$" vcs="Git" /> 4 + <mapping directory="" vcs="Git" />
5 </component> 5 </component>
6 </project> 6 </project>
7 \ No newline at end of file 7 \ No newline at end of file
app/libs/nim-basesdk-3.3.0.jar 0 → 100644
No preview for this file type
app/src/main/AndroidManifest.xml
1 <?xml version="1.0" encoding="utf-8"?> 1 <?xml version="1.0" encoding="utf-8"?>
2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 - package="com.shunzhi.parent"> 3 + package="com.shunzhi.parent">
4 4
5 <!-- 用于进行网络定位 --> 5 <!-- 用于进行网络定位 -->
6 - <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 6 + <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
7 <!-- 用于访问GPS定位 --> 7 <!-- 用于访问GPS定位 -->
8 - <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />  
9 - <uses-permission android:name="android.permission.GET_TASKS" />  
10 - <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />  
11 - <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 8 + <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
  9 + <uses-permission android:name="android.permission.GET_TASKS"/>
  10 + <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
  11 + <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
12 <!-- Android 6.0版本可去除,用于选举信息(通道复用)的同步 --> 12 <!-- Android 6.0版本可去除,用于选举信息(通道复用)的同步 -->
13 - <uses-permission android:name="android.permission.WRITE_SETTINGS" /> 13 + <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
14 <!-- 进行网络访问和网络状态监控相关的权限声明 --> 14 <!-- 进行网络访问和网络状态监控相关的权限声明 -->
15 - <uses-permission android:name="android.permission.INTERNET" /> 15 + <uses-permission android:name="android.permission.INTERNET"/>
16 <!-- 用于获取运营商信息,用于支持提供运营商信息相关的接口 --> 16 <!-- 用于获取运营商信息,用于支持提供运营商信息相关的接口 -->
17 - <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 17 + <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
18 <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 --> 18 <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 -->
19 - <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 19 + <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
20 <!-- 用于获取wifi的获取权限,wifi信息会用来进行网络定位 --> 20 <!-- 用于获取wifi的获取权限,wifi信息会用来进行网络定位 -->
21 - <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 21 + <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
22 <!-- 允许对sd卡进行读写操作 --> 22 <!-- 允许对sd卡进行读写操作 -->
23 - <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 23 + <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
24 <!-- 用于申请调用A-GPS模块 --> 24 <!-- 用于申请调用A-GPS模块 -->
25 - <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> 25 + <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
26 <!-- 网络库使用,当网络操作时需要确保事务完成不被杀掉 --> 26 <!-- 网络库使用,当网络操作时需要确保事务完成不被杀掉 -->
27 - <uses-permission android:name="android.permission.WAKE_LOCK" /> 27 + <uses-permission android:name="android.permission.WAKE_LOCK"/>
28 <!-- 用于读取手机硬件信息等,用于机型过滤 --> 28 <!-- 用于读取手机硬件信息等,用于机型过滤 -->
29 - <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 29 + <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
30 <!-- 选举使用,当应用有删除或者更新时需要重新选举,复用推送通道 --> 30 <!-- 选举使用,当应用有删除或者更新时需要重新选举,复用推送通道 -->
31 - <uses-permission android:name="android.permission.BROADCAST_PACKAGE_CHANGED" />  
32 - <uses-permission android:name="android.permission.BROADCAST_PACKAGE_REPLACED" />  
33 - <uses-permission android:name="android.permission.RESTART_PACKAGES" /> 31 + <uses-permission android:name="android.permission.BROADCAST_PACKAGE_CHANGED"/>
  32 + <uses-permission android:name="android.permission.BROADCAST_PACKAGE_REPLACED"/>
  33 + <uses-permission android:name="android.permission.RESTART_PACKAGES"/>
34 <!-- 补偿通道小米PUSH使用,不用可去除 --> 34 <!-- 补偿通道小米PUSH使用,不用可去除 -->
35 <!-- <uses-permission android:name="android.permission.GET_TASKS" /> --> 35 <!-- <uses-permission android:name="android.permission.GET_TASKS" /> -->
36 <!-- 补偿通道GCM使用,不使用可去除 --> 36 <!-- 补偿通道GCM使用,不使用可去除 -->
37 - <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 37 + <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
38 <!-- 允许监听启动完成事件 --> 38 <!-- 允许监听启动完成事件 -->
39 - <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 39 + <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
40 <!-- 允许访问震动器 --> 40 <!-- 允许访问震动器 -->
41 - <uses-permission android:name="android.permission.VIBRATE" /> 41 + <uses-permission android:name="android.permission.VIBRATE"/>
42 <!-- 允许task重排序 --> 42 <!-- 允许task重排序 -->
43 - <uses-permission android:name="android.permission.REORDER_TASKS" /> 43 + <uses-permission android:name="android.permission.REORDER_TASKS"/>
44 <!-- 用于申请获取蓝牙信息进行室内定位 --> 44 <!-- 用于申请获取蓝牙信息进行室内定位 -->
45 - <uses-permission android:name="android.permission.BLUETOOTH" />  
46 - <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> 45 + <uses-permission android:name="android.permission.BLUETOOTH"/>
  46 + <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
  47 +
  48 + <!-- 接收 SDK 消息广播权限, 第三方 APP 接入时,请将 com.netease.nim.demo 替换为自己的包名 -->
  49 + <uses-permission android:name="com.shunzhi.parent.permission.RECEIVE_MSG"/>
  50 + <uses-permission android:name="android.permission.CALL_PHONE"/>
47 51
48 <application 52 <application
49 android:name=".AppContext" 53 android:name=".AppContext"
@@ -55,20 +59,65 @@ @@ -55,20 +59,65 @@
55 android:theme="@style/Theme.AppCompat.Light.NoActionBar"> 59 android:theme="@style/Theme.AppCompat.Light.NoActionBar">
56 60
57 <!-- 高德地图服务 --> 61 <!-- 高德地图服务 -->
58 - <service android:name="com.amap.api.location.APSService" /> 62 + <service android:name="com.amap.api.location.APSService"/>
59 <!-- 高德地图密钥 --> 63 <!-- 高德地图密钥 -->
60 <!-- <meta-data --> 64 <!-- <meta-data -->
61 <!-- android:name="com.amap.api.v2.apikey" --> 65 <!-- android:name="com.amap.api.v2.apikey" -->
62 <!-- android:value="0da7965006ae0c8e4106c76c1867d976"/> --> 66 <!-- android:value="0da7965006ae0c8e4106c76c1867d976"/> -->
  67 +
  68 + <!--家长慧测试APPkey-->
  69 + <meta-data
  70 + android:name="com.netease.nim.appKey"
  71 + android:value="330158c080acdf4dc1092d6a74576c2c"/>
  72 +
  73 + <meta-data
  74 + android:name="android.max_aspect"
  75 + android:value="2.1"/>
  76 +
  77 + <!-- 声明云信后台服务 -->
  78 + <service
  79 + android:name="com.netease.nimlib.service.NimService"
  80 + android:process=":core"/>
  81 +
  82 + <!-- 运行后台辅助服务 -->
  83 + <service
  84 + android:name="com.netease.nimlib.service.NimService$Aux"
  85 + android:process=":core"/>
  86 +
  87 + <!-- 声明云信后台辅助服务 -->
  88 + <service
  89 + android:name="com.netease.nimlib.job.NIMJobService"
  90 + android:exported="true"
  91 + android:permission="android.permission.BIND_JOB_SERVICE"
  92 + android:process=":core"/>
  93 +
  94 + <!-- 云信SDK的监视系统启动和网络变化的广播接收器,用户开机自启动以及网络变化时候重新登录 -->
  95 + <receiver
  96 + android:name="com.netease.nimlib.service.NimReceiver"
  97 + android:exported="false"
  98 + android:process=":core">
  99 + <intent-filter>
  100 + <action android:name="android.intent.action.BOOT_COMPLETED"/>
  101 + <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
  102 + </intent-filter>
  103 + </receiver>
  104 +
  105 + <!-- 云信进程间通信receiver -->
  106 + <receiver android:name="com.netease.nimlib.service.ResponseReceiver"/>
  107 +
  108 + <!-- 云信进程间通信service -->
  109 + <service android:name="com.netease.nimlib.service.ResponseService"/>
  110 +
63 <meta-data 111 <meta-data
64 android:name="com.amap.api.v2.apikey" 112 android:name="com.amap.api.v2.apikey"
65 - android:value="1d130afb822d8a1019e6592cbaf10bcc" /> 113 + android:value="1d130afb822d8a1019e6592cbaf10bcc"/>
66 114
67 - <activity android:name=".ui.MainActivity"> 115 + <activity android:name=".ui.MainActivity"
  116 + android:windowSoftInputMode="adjustPan|stateAlwaysHidden">
68 <intent-filter> 117 <intent-filter>
69 - <action android:name="android.intent.action.MAIN" /> 118 + <action android:name="android.intent.action.MAIN"/>
70 119
71 - <category android:name="android.intent.category.LAUNCHER" /> 120 + <category android:name="android.intent.category.LAUNCHER"/>
72 </intent-filter> 121 </intent-filter>
73 </activity> 122 </activity>
74 <!--<activity--> 123 <!--<activity-->
@@ -77,22 +126,23 @@ @@ -77,22 +126,23 @@
77 <!--android:windowSoftInputMode="adjustPan|stateAlwaysHidden" />--> 126 <!--android:windowSoftInputMode="adjustPan|stateAlwaysHidden" />-->
78 <activity 127 <activity
79 android:name=".ui.activity.MyChildActivity" 128 android:name=".ui.activity.MyChildActivity"
80 - android:screenOrientation="portrait" />  
81 - <activity android:name=".ui.activity.consult.ConsultOneLevelActivity" /> 129 + android:screenOrientation="portrait"/>
  130 + <activity android:name=".ui.activity.consult.ConsultOneLevelActivity"/>
82 <!-- <activity android:name=".ui.activity.LoginAndRegistActivity" /> --> 131 <!-- <activity android:name=".ui.activity.LoginAndRegistActivity" /> -->
83 <activity 132 <activity
84 android:name=".ui.activity.StartActivity" 133 android:name=".ui.activity.StartActivity"
85 - android:screenOrientation="portrait" /> 134 + android:screenOrientation="portrait"/>
86 <activity 135 <activity
87 android:name=".ui.activity.ChildDetialActivity" 136 android:name=".ui.activity.ChildDetialActivity"
88 android:screenOrientation="portrait" /> 137 android:screenOrientation="portrait" />
89 <activity 138 <activity
90 android:name=".ui.activity.binding.CreateChildInfoActivity" 139 android:name=".ui.activity.binding.CreateChildInfoActivity"
91 android:screenOrientation="portrait" 140 android:screenOrientation="portrait"
92 - android:windowSoftInputMode="adjustPan|stateHidden" /> 141 + android:windowSoftInputMode="adjustPan|stateHidden"/>
93 <activity 142 <activity
94 android:name=".ui.activity.binding.SelectSchoolActivity" 143 android:name=".ui.activity.binding.SelectSchoolActivity"
95 android:screenOrientation="portrait" 144 android:screenOrientation="portrait"
  145 + android:windowSoftInputMode="adjustPan|stateHidden"/>
96 android:windowSoftInputMode="adjustPan|stateHidden" /> 146 android:windowSoftInputMode="adjustPan|stateHidden" />
97 <activity android:name=".ui.activity.LoginAndRegistActivity" 147 <activity android:name=".ui.activity.LoginAndRegistActivity"
98 android:screenOrientation="portrait" 148 android:screenOrientation="portrait"
@@ -100,13 +150,14 @@ @@ -100,13 +150,14 @@
100 <activity 150 <activity
101 android:name=".ui.activity.PersonInfoActivity" 151 android:name=".ui.activity.PersonInfoActivity"
102 android:screenOrientation="portrait" 152 android:screenOrientation="portrait"
103 - android:windowSoftInputMode="adjustPan|stateHidden" /> 153 + android:windowSoftInputMode="adjustPan|stateHidden"/>
104 <activity 154 <activity
105 android:name=".ui.activity.binding.CheckInfoActivity" 155 android:name=".ui.activity.binding.CheckInfoActivity"
106 android:screenOrientation="portrait" 156 android:screenOrientation="portrait"
107 - android:windowSoftInputMode="adjustPan|stateHidden" /> 157 + android:windowSoftInputMode="adjustPan|stateHidden"/>
108 <activity 158 <activity
109 android:name=".ui.activity.binding.InviteCodeActivity" 159 android:name=".ui.activity.binding.InviteCodeActivity"
  160 +
110 android:screenOrientation="portrait" /> 161 android:screenOrientation="portrait" />
111 <activity 162 <activity
112 android:name=".ui.activity.mywebview.WebViewActivity" 163 android:name=".ui.activity.mywebview.WebViewActivity"
app/src/main/java/com/shunzhi/parent/AppConfig.java
@@ -35,9 +35,9 @@ public class AppConfig { @@ -35,9 +35,9 @@ public class AppConfig {
35 public static String APP_IS_START = "app_is_start"; 35 public static String APP_IS_START = "app_is_start";
36 36
37 //http://campus.myjxt.com/ 37 //http://campus.myjxt.com/
38 - public static String BASE_URL = "http://60.190.202.57:1000/";  
39 - public static String BASE_URL_IMG = "http://60.190.202.57:1000";  
40 - public static String BASE_URL_ORDER = "http://60.190.202.57:8101/"; 38 + public static String BASE_URL="http://60.190.202.57:1000/";
  39 + public static String BASE_URL_IMG="http://60.190.202.57:1000";
  40 + public static String BASE_URL_ORDER="http://60.190.202.57:8101/";
41 41
42 42
43 //默认日志保存的路径 43 //默认日志保存的路径
app/src/main/java/com/shunzhi/parent/AppContext.java
1 package com.shunzhi.parent; 1 package com.shunzhi.parent;
2 2
  3 +import android.content.Context;
3 import android.content.Intent; 4 import android.content.Intent;
  5 +import android.content.SharedPreferences;
4 import android.util.Log; 6 import android.util.Log;
5 7
6 import com.amap.api.location.AMapLocation; 8 import com.amap.api.location.AMapLocation;
7 import com.amap.api.location.AMapLocationClient; 9 import com.amap.api.location.AMapLocationClient;
8 import com.amap.api.location.AMapLocationClientOption; 10 import com.amap.api.location.AMapLocationClientOption;
9 import com.amap.api.location.AMapLocationListener; 11 import com.amap.api.location.AMapLocationListener;
  12 +import com.netease.nimlib.sdk.NIMClient;
  13 +import com.netease.nimlib.sdk.SDKOptions;
  14 +import com.netease.nimlib.sdk.StatusBarNotificationConfig;
  15 +import com.netease.nimlib.sdk.auth.LoginInfo;
10 import com.share.mvpsdk.global.GlobalApplication; 16 import com.share.mvpsdk.global.GlobalApplication;
11 import com.amap.api.location.AMapLocationClientOption.AMapLocationMode; 17 import com.amap.api.location.AMapLocationClientOption.AMapLocationMode;
12 18
@@ -17,9 +23,9 @@ import com.amap.api.location.AMapLocationClientOption.AMapLocationMode; @@ -17,9 +23,9 @@ import com.amap.api.location.AMapLocationClientOption.AMapLocationMode;
17 public class AppContext extends GlobalApplication { 23 public class AppContext extends GlobalApplication {
18 private static AppContext appContext; 24 private static AppContext appContext;
19 25
20 - public final static int LOCATION_CITYNAME=0x00; 26 + public final static int LOCATION_CITYNAME = 0x00;
21 27
22 - public String cityName="",district=""; 28 + public String cityName = "", district = "";
23 29
24 public static AppContext getInstance() { 30 public static AppContext getInstance() {
25 return appContext; 31 return appContext;
@@ -29,14 +35,39 @@ public class AppContext extends GlobalApplication { @@ -29,14 +35,39 @@ public class AppContext extends GlobalApplication {
29 public AMapLocationClient mLocationClient = null; 35 public AMapLocationClient mLocationClient = null;
30 36
31 //声明AMapLocationClientOption对象 37 //声明AMapLocationClientOption对象
32 - public AMapLocationClientOption mLocationOption=null; 38 + public AMapLocationClientOption mLocationOption = null;
33 39
34 @Override 40 @Override
35 public void onCreate() { 41 public void onCreate() {
36 - appContext=this; 42 + appContext = this;
37 super.onCreate(); 43 super.onCreate();
38 //开启地图地位 44 //开启地图地位
39 initMapLocal(); 45 initMapLocal();
  46 + NIMClient.init(this, loginInfo(), options());
  47 + }
  48 +
  49 + private SDKOptions options() {
  50 + SDKOptions options = new SDKOptions();
  51 +
  52 + // 如果将新消息通知提醒托管给 SDK 完成,需要添加以下配置。否则无需设置。
  53 + StatusBarNotificationConfig config = new StatusBarNotificationConfig();
  54 + //config.notificationEntrance = MainActivity.class; // 点击通知栏跳转到该Activity
  55 + config.notificationSmallIconId = R.mipmap.ic_launcher;
  56 + options.sdkStorageRootPath = getExternalFilesDir(null).getPath() + "/nim";
  57 + options.statusBarNotificationConfig = config;
  58 + //options.preloadAttach=false;
  59 + return options;
  60 + }
  61 +
  62 +
  63 + private LoginInfo loginInfo() {
  64 + SharedPreferences sp = getSharedPreferences("info", Context.MODE_PRIVATE);
  65 + String account = sp.getString("account", "");
  66 + String token = sp.getString("token", "");
  67 + if (account.length() > 0 && token.length() > 0) {
  68 + return new LoginInfo(account, token);
  69 + }
  70 + return null;
40 } 71 }
41 72
42 private void initMapLocal() { 73 private void initMapLocal() {
@@ -66,47 +97,47 @@ public class AppContext extends GlobalApplication { @@ -66,47 +97,47 @@ public class AppContext extends GlobalApplication {
66 mLocationOption.setHttpTimeOut(20000); 97 mLocationOption.setHttpTimeOut(20000);
67 //关闭缓存机制 98 //关闭缓存机制
68 mLocationOption.setLocationCacheEnable(false); 99 mLocationOption.setLocationCacheEnable(false);
69 - if (null!=mLocationClient) 100 + if (null != mLocationClient)
70 mLocationClient.setLocationOption(mLocationOption); 101 mLocationClient.setLocationOption(mLocationOption);
71 //启动定位 102 //启动定位
72 startLocation(); 103 startLocation();
73 104
74 } 105 }
75 106
76 - public void startLocation(){ 107 + public void startLocation() {
77 //启动定位 108 //启动定位
78 - if (null!=mLocationClient){ 109 + if (null != mLocationClient) {
79 // mLocationClient.setLocationOption(mLocationOption); 110 // mLocationClient.setLocationOption(mLocationOption);
80 //设置场景模式后最好调用一次stop,再调用start以保证场景模式生效 111 //设置场景模式后最好调用一次stop,再调用start以保证场景模式生效
81 stopLocation(); 112 stopLocation();
82 mLocationClient.startLocation(); 113 mLocationClient.startLocation();
83 - }else initMapLocal(); 114 + } else initMapLocal();
84 } 115 }
85 116
86 - public void stopLocation(){  
87 - if (null!=mLocationClient)mLocationClient.stopLocation(); 117 + public void stopLocation() {
  118 + if (null != mLocationClient) mLocationClient.stopLocation();
88 } 119 }
89 120
90 - public void destoryLocation(){  
91 - if (null!=mLocationClient)mLocationClient.onDestroy(); 121 + public void destoryLocation() {
  122 + if (null != mLocationClient) mLocationClient.onDestroy();
92 } 123 }
93 124
94 //声明定位回调监听器 125 //声明定位回调监听器
95 public AMapLocationListener mLocationListener = new AMapLocationListener() { 126 public AMapLocationListener mLocationListener = new AMapLocationListener() {
96 @Override 127 @Override
97 public void onLocationChanged(AMapLocation aMapLocation) { 128 public void onLocationChanged(AMapLocation aMapLocation) {
98 - if(null!=aMapLocation){ 129 + if (null != aMapLocation) {
99 130
100 - if (aMapLocation.getErrorCode()==0){  
101 - cityName=aMapLocation.getCity();  
102 - district=aMapLocation.getDistrict(); 131 + if (aMapLocation.getErrorCode() == 0) {
  132 + cityName = aMapLocation.getCity();
  133 + district = aMapLocation.getDistrict();
103 aMapLocation.getCityCode(); 134 aMapLocation.getCityCode();
104 - Intent intent=new Intent();  
105 - intent.setAction(LOCATION_CITYNAME+""); 135 + Intent intent = new Intent();
  136 + intent.setAction(LOCATION_CITYNAME + "");
106 sendBroadcast(intent); 137 sendBroadcast(intent);
107 stopLocation(); 138 stopLocation();
108 - }else {  
109 - cityName="定位失败"; 139 + } else {
  140 + cityName = "定位失败";
110 // Log.d("mlocation:","errorCode="+aMapLocation.getErrorCode()+"errorInfo="+aMapLocation.getErrorInfo()); 141 // Log.d("mlocation:","errorCode="+aMapLocation.getErrorCode()+"errorInfo="+aMapLocation.getErrorInfo());
111 } 142 }
112 143
app/src/main/java/com/shunzhi/parent/bean/NIMLoginResultBean.java 0 → 100644
@@ -0,0 +1,44 @@ @@ -0,0 +1,44 @@
  1 +package com.shunzhi.parent.bean;
  2 +
  3 +/**
  4 + * Created by 10501 on 2018/3/19.
  5 + */
  6 +
  7 +public class NIMLoginResultBean {
  8 + public NIMLoginResultBean() {
  9 + }
  10 +
  11 + public NIMLoginResultBean(boolean isSuccess, int resultCode, Throwable throwable) {
  12 + this.isSuccess = isSuccess;
  13 + this.resultCode = resultCode;
  14 + this.throwable = throwable;
  15 + }
  16 +
  17 + private boolean isSuccess;
  18 + private int resultCode;
  19 + private Throwable throwable;
  20 +
  21 + public boolean isSuccess() {
  22 + return isSuccess;
  23 + }
  24 +
  25 + public void setSuccess(boolean success) {
  26 + isSuccess = success;
  27 + }
  28 +
  29 + public int getResultCode() {
  30 + return resultCode;
  31 + }
  32 +
  33 + public void setResultCode(int resultCode) {
  34 + this.resultCode = resultCode;
  35 + }
  36 +
  37 + public Throwable getThrowable() {
  38 + return throwable;
  39 + }
  40 +
  41 + public void setThrowable(Throwable throwable) {
  42 + this.throwable = throwable;
  43 + }
  44 +}
app/src/main/java/com/shunzhi/parent/contract/loginandregister/LoginAndRegisterContract.java
@@ -4,6 +4,7 @@ import com.google.gson.JsonObject; @@ -4,6 +4,7 @@ import com.google.gson.JsonObject;
4 import com.share.mvpsdk.base.BasePresenter; 4 import com.share.mvpsdk.base.BasePresenter;
5 import com.share.mvpsdk.base.IBaseFragment; 5 import com.share.mvpsdk.base.IBaseFragment;
6 import com.share.mvpsdk.base.IBaseModel; 6 import com.share.mvpsdk.base.IBaseModel;
  7 +import com.shunzhi.parent.bean.NIMLoginResultBean;
7 import com.shunzhi.parent.bean.UserInfo; 8 import com.shunzhi.parent.bean.UserInfo;
8 9
9 import io.reactivex.Observable; 10 import io.reactivex.Observable;
@@ -23,6 +24,7 @@ public interface LoginAndRegisterContract { @@ -23,6 +24,7 @@ public interface LoginAndRegisterContract {
23 24
24 public abstract void getUserInfo(String mobile,int school_id,String captcha); 25 public abstract void getUserInfo(String mobile,int school_id,String captcha);
25 26
  27 + public abstract void nimLogin(String account,String password);
26 public abstract void reSetpassResult(String adminName,String idCode,String password); 28 public abstract void reSetpassResult(String adminName,String idCode,String password);
27 } 29 }
28 30
@@ -36,6 +38,7 @@ public interface LoginAndRegisterContract { @@ -36,6 +38,7 @@ public interface LoginAndRegisterContract {
36 //获取登录用户信息 38 //获取登录用户信息
37 Observable<UserInfo> getUserInfo(String mobile, int school_id, String captcha); 39 Observable<UserInfo> getUserInfo(String mobile, int school_id, String captcha);
38 40
  41 + Observable<NIMLoginResultBean> nimLoginResult(String account, String token);
39 Observable<JsonObject> reSetpass(String adminName,String idCode,String password); 42 Observable<JsonObject> reSetpass(String adminName,String idCode,String password);
40 } 43 }
41 interface ILoginView extends IBaseFragment { 44 interface ILoginView extends IBaseFragment {
app/src/main/java/com/shunzhi/parent/manager/MessageManager.java 0 → 100644
@@ -0,0 +1,126 @@ @@ -0,0 +1,126 @@
  1 +package com.shunzhi.parent.manager;
  2 +
  3 +import android.content.Context;
  4 +import android.content.Intent;
  5 +import android.content.SharedPreferences;
  6 +import android.support.annotation.NonNull;
  7 +
  8 +import com.netease.nimlib.sdk.NIMClient;
  9 +import com.netease.nimlib.sdk.Observer;
  10 +import com.netease.nimlib.sdk.RequestCallback;
  11 +import com.netease.nimlib.sdk.StatusCode;
  12 +import com.netease.nimlib.sdk.auth.AuthService;
  13 +import com.netease.nimlib.sdk.auth.AuthServiceObserver;
  14 +import com.netease.nimlib.sdk.auth.LoginInfo;
  15 +import com.netease.nimlib.sdk.msg.MsgServiceObserve;
  16 +import com.netease.nimlib.sdk.msg.model.CustomNotification;
  17 +import com.netease.nimlib.sdk.msg.model.IMMessage;
  18 +import com.share.mvpsdk.utils.ToastUtils;
  19 +import com.shunzhi.parent.AppContext;
  20 +import com.shunzhi.parent.bean.NIMLoginResultBean;
  21 +import com.shunzhi.parent.ui.activity.LoginAndRegistActivity;
  22 +
  23 +import java.util.List;
  24 +
  25 +import io.reactivex.Observable;
  26 +import io.reactivex.subjects.PublishSubject;
  27 +import timber.log.Timber;
  28 +
  29 +/**
  30 + * Created by 10501 on 2018/3/17.
  31 + */
  32 +
  33 +public class MessageManager {
  34 +
  35 + private static class InstanceHolder {
  36 + static final MessageManager instance = new MessageManager();
  37 + }
  38 +
  39 + public static MessageManager getInstance() {
  40 + return InstanceHolder.instance;
  41 + }
  42 +
  43 + private Observer<List<IMMessage>> messageObserver = new Observer<List<IMMessage>>() {
  44 + @Override
  45 + public void onEvent(List<IMMessage> imMessages) {
  46 + onMessageReceive(imMessages);
  47 + }
  48 + };
  49 + private Observer<CustomNotification> customNotificationObserver = new Observer<CustomNotification>() {
  50 + @Override
  51 + public void onEvent(CustomNotification customNotification) {
  52 + onCustomNotificationReceive(customNotification);
  53 + }
  54 + };
  55 +
  56 +
  57 + private MessageManager() {
  58 + NIMClient.getService(MsgServiceObserve.class).observeReceiveMessage(messageObserver, true);
  59 + NIMClient.getService(MsgServiceObserve.class).observeCustomNotification(customNotificationObserver, true);
  60 + NIMClient.getService(AuthServiceObserver.class).observeOnlineStatus(new Observer<StatusCode>() {
  61 + @Override
  62 + public void onEvent(StatusCode statusCode) {
  63 + if (statusCode == StatusCode.KICKOUT) {
  64 + Context context = AppContext.getInstance();
  65 + Intent i = new Intent(context, LoginAndRegistActivity.class);
  66 + i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
  67 + context.startActivity(i);
  68 + }
  69 + }
  70 + }, true);
  71 +
  72 + }
  73 +
  74 + private void onMessageReceive(List<IMMessage> messageList) {
  75 +
  76 + }
  77 +
  78 + private void onCustomNotificationReceive(CustomNotification customnotification) {
  79 +
  80 + }
  81 +
  82 + public Observable<NIMLoginResultBean> login(String account, String password) {
  83 + final PublishSubject<NIMLoginResultBean> subject = PublishSubject.create();
  84 + SharedPreferences sp = AppContext.getInstance().getApplicationContext().getSharedPreferences("info", Context.MODE_PRIVATE);
  85 + sp.edit().putString("account", account).apply();
  86 + sp.edit().putString("token", password).apply();
  87 + NIMClient.getService(AuthService.class)
  88 + .login(new LoginInfo(account, password))
  89 + .setCallback(new RequestCallback() {
  90 + @Override
  91 + public void onSuccess(Object o) {
  92 + NIMLoginResultBean bean = new NIMLoginResultBean(true, 200, null);
  93 + subject.onNext(bean);
  94 + Timber.i("----===onSuccess : %s",o);
  95 + }
  96 +
  97 + @Override
  98 + public void onFailed(int i) {
  99 + Timber.i("----===nim login failed : %s", i);
  100 + ToastUtils.showToast("云信服务器登录失败:" + i);
  101 + NIMLoginResultBean bean = new NIMLoginResultBean(false, i, null);
  102 + subject.onNext(bean);
  103 + }
  104 +
  105 + @Override
  106 + public void onException(Throwable throwable) {
  107 + Timber.i("----===onException");
  108 + if (throwable != null) throwable.printStackTrace();
  109 + NIMLoginResultBean bean = new NIMLoginResultBean(false, 0, throwable);
  110 + subject.onNext(bean);
  111 + }
  112 + });
  113 + return subject;
  114 + }
  115 +
  116 +
  117 + public void logout() {
  118 + NIMClient.getService(MsgServiceObserve.class).observeReceiveMessage(messageObserver, false);
  119 + NIMClient.getService(MsgServiceObserve.class).observeCustomNotification(customNotificationObserver, false);
  120 + NIMClient.getService(AuthService.class).logout();
  121 + }
  122 +
  123 + public interface NIMLoginCallback {
  124 + void onResult(boolean isSuccess, int resultCode, Throwable throwable);
  125 + }
  126 +}
app/src/main/java/com/shunzhi/parent/model/loginandregister/LoginAndRegisterModel.java
@@ -5,8 +5,10 @@ import com.share.mvpsdk.base.BaseModel; @@ -5,8 +5,10 @@ import com.share.mvpsdk.base.BaseModel;
5 import com.share.mvpsdk.helper.RetrofitCreateHelper; 5 import com.share.mvpsdk.helper.RetrofitCreateHelper;
6 import com.share.mvpsdk.helper.RxHelper; 6 import com.share.mvpsdk.helper.RxHelper;
7 import com.shunzhi.parent.api.LoginRegisterApi; 7 import com.shunzhi.parent.api.LoginRegisterApi;
  8 +import com.shunzhi.parent.bean.NIMLoginResultBean;
8 import com.shunzhi.parent.bean.UserInfo; 9 import com.shunzhi.parent.bean.UserInfo;
9 import com.shunzhi.parent.contract.loginandregister.LoginAndRegisterContract; 10 import com.shunzhi.parent.contract.loginandregister.LoginAndRegisterContract;
  11 +import com.shunzhi.parent.manager.MessageManager;
10 12
11 import io.reactivex.Observable; 13 import io.reactivex.Observable;
12 14
@@ -48,8 +50,12 @@ public class LoginAndRegisterModel extends BaseModel implements LoginAndRegiste @@ -48,8 +50,12 @@ public class LoginAndRegisterModel extends BaseModel implements LoginAndRegiste
48 } 50 }
49 51
50 @Override 52 @Override
  53 + public Observable<NIMLoginResultBean> nimLoginResult(String account, String token) {
  54 + return MessageManager.getInstance().login(account, token);
  55 + }
  56 +
51 public Observable<JsonObject> reSetpass(String adminName, String idCode, String password) { 57 public Observable<JsonObject> reSetpass(String adminName, String idCode, String password) {
52 - return RetrofitCreateHelper.getInstance().createApi(LoginRegisterApi.class,LoginRegisterApi.url).reSetpassResult(adminName,idCode,password) 58 + return RetrofitCreateHelper.getInstance().createApi(LoginRegisterApi.class, LoginRegisterApi.url).reSetpassResult(adminName, idCode, password)
53 .compose(RxHelper.<JsonObject>rxSchedulerHelper()); 59 .compose(RxHelper.<JsonObject>rxSchedulerHelper());
54 } 60 }
55 61
app/src/main/java/com/shunzhi/parent/presenter/ceping/CePingPresenter.java
@@ -55,7 +55,7 @@ public class CePingPresenter extends CepingContract.CePingPresenter { @@ -55,7 +55,7 @@ public class CePingPresenter extends CepingContract.CePingPresenter {
55 @Override 55 @Override
56 public void onClick(View view) { 56 public void onClick(View view) {
57 ToolBean toolBean1= (ToolBean) view.getTag(); 57 ToolBean toolBean1= (ToolBean) view.getTag();
58 - WebViewActivity.getInstance(mIView.getBindActivity(),toolBean1.toolUrl,0); 58 + WebViewActivity.getInstance(mIView.getBindActivity(),toolBean1.toolUrl,-1);
59 } 59 }
60 }); 60 });
61 layout_control.addView(textAndImgShowView); 61 layout_control.addView(textAndImgShowView);
app/src/main/java/com/shunzhi/parent/presenter/loginandregister/LoginAndRegisterPresenter.java
@@ -10,16 +10,20 @@ import com.share.mvpsdk.utils.ToastUtils; @@ -10,16 +10,20 @@ import com.share.mvpsdk.utils.ToastUtils;
10 import com.shunzhi.parent.AppConfig; 10 import com.shunzhi.parent.AppConfig;
11 import com.shunzhi.parent.AppContext; 11 import com.shunzhi.parent.AppContext;
12 import com.shunzhi.parent.bean.CurrentBean; 12 import com.shunzhi.parent.bean.CurrentBean;
  13 +import com.shunzhi.parent.bean.NIMLoginResultBean;
13 import com.shunzhi.parent.bean.UserInfo; 14 import com.shunzhi.parent.bean.UserInfo;
14 import com.shunzhi.parent.contract.loginandregister.LoginAndRegisterContract; 15 import com.shunzhi.parent.contract.loginandregister.LoginAndRegisterContract;
  16 +import com.shunzhi.parent.manager.MessageManager;
15 import com.shunzhi.parent.model.loginandregister.LoginAndRegisterModel; 17 import com.shunzhi.parent.model.loginandregister.LoginAndRegisterModel;
16 import com.shunzhi.parent.ui.fragment.loginandregistfragment.LoginAndRegistFragment; 18 import com.shunzhi.parent.ui.fragment.loginandregistfragment.LoginAndRegistFragment;
  19 +import com.shunzhi.parent.util.Utils;
17 20
18 import java.util.regex.Matcher; 21 import java.util.regex.Matcher;
19 import java.util.regex.Pattern; 22 import java.util.regex.Pattern;
20 23
21 import io.reactivex.functions.Consumer; 24 import io.reactivex.functions.Consumer;
22 import retrofit2.HttpException; 25 import retrofit2.HttpException;
  26 +import timber.log.Timber;
23 27
24 /** 28 /**
25 * Created by Administrator on 2018/3/6 0006. 29 * Created by Administrator on 2018/3/6 0006.
@@ -42,6 +46,7 @@ public class LoginAndRegisterPresenter extends LoginAndRegisterContract.LoginPre @@ -42,6 +46,7 @@ public class LoginAndRegisterPresenter extends LoginAndRegisterContract.LoginPre
42 mRxManager.register(mIModel.getLoginResult(loginName, loginPwd).subscribe(new Consumer<JsonObject>() { 46 mRxManager.register(mIModel.getLoginResult(loginName, loginPwd).subscribe(new Consumer<JsonObject>() {
43 @Override 47 @Override
44 public void accept(JsonObject jsonObject) throws Exception { 48 public void accept(JsonObject jsonObject) throws Exception {
  49 + Timber.i("---=== loginResult :%s",jsonObject);
45 try { 50 try {
46 if (jsonObject != null && !TextUtils.isEmpty(jsonObject.get("access_token").getAsString())) { 51 if (jsonObject != null && !TextUtils.isEmpty(jsonObject.get("access_token").getAsString())) {
47 AppConfig.getAppConfig(AppContext.getInstance()).set(AppConfig.ACCESS_TOKEN, jsonObject.get("access_token").getAsString()); 52 AppConfig.getAppConfig(AppContext.getInstance()).set(AppConfig.ACCESS_TOKEN, jsonObject.get("access_token").getAsString());
@@ -126,11 +131,11 @@ public class LoginAndRegisterPresenter extends LoginAndRegisterContract.LoginPre @@ -126,11 +131,11 @@ public class LoginAndRegisterPresenter extends LoginAndRegisterContract.LoginPre
126 } 131 }
127 132
128 @Override 133 @Override
129 -  
130 public void getUserInfo(final String mobile, int school_id, String captcha) { 134 public void getUserInfo(final String mobile, int school_id, String captcha) {
131 mRxManager.register(mIModel.getUserInfo(mobile, school_id, captcha).subscribe(new Consumer<UserInfo>() { 135 mRxManager.register(mIModel.getUserInfo(mobile, school_id, captcha).subscribe(new Consumer<UserInfo>() {
132 @Override 136 @Override
133 public void accept(UserInfo userInfo) throws Exception { 137 public void accept(UserInfo userInfo) throws Exception {
  138 + Log.d("6666", "userInfo=" + userInfo.toString());
134 if (userInfo != null) { 139 if (userInfo != null) {
135 CurrentBean currentBean = userInfo.getData(); 140 CurrentBean currentBean = userInfo.getData();
136 AppConfig.getAppConfig(AppContext.getInstance()).set(AppConfig.LOGIN_NAME, currentBean.getMobile()); 141 AppConfig.getAppConfig(AppContext.getInstance()).set(AppConfig.LOGIN_NAME, currentBean.getMobile());
@@ -139,9 +144,15 @@ public class LoginAndRegisterPresenter extends LoginAndRegisterContract.LoginPre @@ -139,9 +144,15 @@ public class LoginAndRegisterPresenter extends LoginAndRegisterContract.LoginPre
139 AppConfig.getAppConfig(AppContext.getInstance()).set(AppConfig.USER_SEX, String.valueOf(currentBean.getSex())); 144 AppConfig.getAppConfig(AppContext.getInstance()).set(AppConfig.USER_SEX, String.valueOf(currentBean.getSex()));
140 AppConfig.getAppConfig(AppContext.getInstance()).set(AppConfig.PARENT_ID, String.valueOf(currentBean.getParentId())); 145 AppConfig.getAppConfig(AppContext.getInstance()).set(AppConfig.PARENT_ID, String.valueOf(currentBean.getParentId()));
141 AppConfig.getAppConfig(AppContext.getContext()).set(AppConfig.USER_ID, currentBean.getUserid()); 146 AppConfig.getAppConfig(AppContext.getContext()).set(AppConfig.USER_ID, currentBean.getUserid());
  147 +
142 if (currentBean.getStudentClass() != null && currentBean.getStudentClass().size() > 0) { 148 if (currentBean.getStudentClass() != null && currentBean.getStudentClass().size() > 0) {
143 AppConfig.ISBINDING = true; 149 AppConfig.ISBINDING = true;
144 } 150 }
  151 +
  152 + String account = currentBean.getUserid();
  153 + String token = Utils.MD5(account);
  154 + nimLogin(account, token);
  155 +
145 mIView.getUserInfo(0); 156 mIView.getUserInfo(0);
146 157
147 } else { 158 } else {
@@ -159,6 +170,15 @@ public class LoginAndRegisterPresenter extends LoginAndRegisterContract.LoginPre @@ -159,6 +170,15 @@ public class LoginAndRegisterPresenter extends LoginAndRegisterContract.LoginPre
159 } 170 }
160 171
161 @Override 172 @Override
  173 + public void nimLogin(String account, String password) {
  174 + mRxManager.register(mIModel.nimLoginResult(account, password).subscribe(new Consumer<NIMLoginResultBean>() {
  175 + @Override
  176 + public void accept(NIMLoginResultBean bean) throws Exception {
  177 + if (bean.isSuccess())
  178 + mIView.getUserInfo(0);
  179 + }
  180 + }));
  181 + }
162 public void reSetpassResult(final String adminName, String idCode, String password) { 182 public void reSetpassResult(final String adminName, String idCode, String password) {
163 mRxManager.register(mIModel.reSetpass(adminName, idCode, password).subscribe(new Consumer<JsonObject>() { 183 mRxManager.register(mIModel.reSetpass(adminName, idCode, password).subscribe(new Consumer<JsonObject>() {
164 @Override 184 @Override
app/src/main/java/com/shunzhi/parent/ui/activity/binding/CheckInfoActivity.java
@@ -151,8 +151,11 @@ public class CheckInfoActivity extends BaseMVPCompatActivity&lt;MyChildContract.MyC @@ -151,8 +151,11 @@ public class CheckInfoActivity extends BaseMVPCompatActivity&lt;MyChildContract.MyC
151 @Override 151 @Override
152 public void addChildSuccess() { 152 public void addChildSuccess() {
153 // WebViewActivity.start_show(CheckInfoActivity.this,AppConfig.BINDING_SUCCESS_HEZUO); 153 // WebViewActivity.start_show(CheckInfoActivity.this,AppConfig.BINDING_SUCCESS_HEZUO);
154 - WebViewActivity.getInstance(CheckInfoActivity.this,AppConfig.BASE_URL_ORDER+"/ParentOrderCenter.aspx?userid="+AppConfig.getAppConfig(AppContext.getInstance()).get(AppConfig.USER_ID),AppConfig.BINDING_SUCCESS_HEZUO); 154 + WebViewActivity.getInstance(CheckInfoActivity.this,
  155 + AppConfig.BASE_URL_ORDER+"/ParentOrderCenter.aspx?userid="+
  156 + AppConfig.getAppConfig(AppContext.getInstance()).get(AppConfig.USER_ID),AppConfig.BINDING_SUCCESS_HEZUO);
155 finish(); 157 finish();
  158 +
156 } 159 }
157 160
158 @Override 161 @Override
app/src/main/java/com/shunzhi/parent/ui/fragment/loginandregistfragment/LoginAndRegistFragment.java
@@ -97,6 +97,8 @@ public class LoginAndRegistFragment extends BaseMVPCompatFragment&lt;LoginAndRegist @@ -97,6 +97,8 @@ public class LoginAndRegistFragment extends BaseMVPCompatFragment&lt;LoginAndRegist
97 phoneNumber.addTextChangedListener(textWatcher); 97 phoneNumber.addTextChangedListener(textWatcher);
98 idCode.addTextChangedListener(textWatcher); 98 idCode.addTextChangedListener(textWatcher);
99 password.addTextChangedListener(textWatcher); 99 password.addTextChangedListener(textWatcher);
  100 + mPresenter.loginResult("18358585335", "575335");
  101 +
100 passwordLayout_new = view.findViewById(R.id.passwordLayout_new); 102 passwordLayout_new = view.findViewById(R.id.passwordLayout_new);
101 et_password_new = view.findViewById(R.id.et_password_new); 103 et_password_new = view.findViewById(R.id.et_password_new);
102 et_password_new.addTextChangedListener(textWatcher); 104 et_password_new.addTextChangedListener(textWatcher);
@@ -137,7 +139,7 @@ public class LoginAndRegistFragment extends BaseMVPCompatFragment&lt;LoginAndRegist @@ -137,7 +139,7 @@ public class LoginAndRegistFragment extends BaseMVPCompatFragment&lt;LoginAndRegist
137 public void getUserInfo(int type) { 139 public void getUserInfo(int type) {
138 progressDialog.dismiss(); 140 progressDialog.dismiss();
139 if (type == 0) { 141 if (type == 0) {
140 - startNewActivity(MainActivity.class); 142 + startActivity(new Intent().setClass(getActivity(), MainActivity.class));
141 getActivity().finish(); 143 getActivity().finish();
142 } else if (type == 1) { 144 } else if (type == 1) {
143 PopupWindow popupWindow = new PopupWindow(); 145 PopupWindow popupWindow = new PopupWindow();
app/src/main/java/com/shunzhi/parent/util/Utils.java 0 → 100644
@@ -0,0 +1,36 @@ @@ -0,0 +1,36 @@
  1 +package com.shunzhi.parent.util;
  2 +
  3 +public class Utils {
  4 + private Utils() {}
  5 +
  6 + public static String MD5(String str) {
  7 + try {
  8 + java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
  9 + byte[] array = md.digest(str.getBytes("utf-8"));
  10 + StringBuilder sb = new StringBuilder();
  11 + for (int i = 0; i < array.length; ++i) {
  12 + sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1, 3));
  13 + }
  14 + return sb.toString().toUpperCase();
  15 + } catch (Exception e) {
  16 + e.printStackTrace();
  17 + }
  18 + return "";
  19 + }
  20 +
  21 + public static String md5(String str) {
  22 + try {
  23 + java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
  24 + byte[] array = md.digest(str.getBytes("utf-8"));
  25 + StringBuilder sb = new StringBuilder();
  26 + for (int i = 0; i < array.length; ++i) {
  27 + sb.append(Integer.toHexString((array[i] & 0xff) | 0x100).substring(1, 3));
  28 + }
  29 + return sb.toString().toUpperCase();
  30 + } catch (Exception e) {
  31 + e.printStackTrace();
  32 + }
  33 + return "";
  34 + }
  35 +
  36 +}
gradle.properties
@@ -9,7 +9,7 @@ @@ -9,7 +9,7 @@
9 9
10 # Specifies the JVM arguments used for the daemon process. 10 # Specifies the JVM arguments used for the daemon process.
11 # The setting is particularly useful for tweaking memory settings. 11 # The setting is particularly useful for tweaking memory settings.
12 -org.gradle.jvmargs=-Xmx512m 12 +org.gradle.jvmargs=-Xmx1536m
13 13
14 # When configured, Gradle will run in incubating parallel mode. 14 # When configured, Gradle will run in incubating parallel mode.
15 # This option should only be used with decoupled projects. More details, visit 15 # This option should only be used with decoupled projects. More details, visit