Переглянути джерело

Merge branch 'developer' of https://gitlab.com/Arisono/SkWeiChat-Baidu into developer

FANGLH 9 роки тому
батько
коміт
a4978d2c33
17 змінених файлів з 717 додано та 611 видалено
  1. 2 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/account/DataDownloadActivity.java
  2. 0 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/circle/SendShuoshuoActivity.java
  3. 9 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/circle/view/CardInfoActivity.java
  4. 3 0
      WeiChat/src/main/res/layout/empty_locayion.xml
  5. 48 2
      app_core/common/src/main/java/com/common/system/SystemUtil.java
  6. 79 75
      app_core/common/src/main/java/com/core/db/SQLiteRawUtil.java
  7. 321 318
      app_core/common/src/main/java/com/core/utils/helper/LoginHelper.java
  8. 0 1
      app_core/common/src/main/java/com/core/utils/pictureselector/FileTraversal.java
  9. 144 143
      app_core/common/src/main/java/com/core/utils/pictureselector/Util.java
  10. 9 1
      app_core/common/src/main/java/com/core/widget/view/Activity/SearchLocationActivity.java
  11. 3 1
      app_core/common/src/main/java/com/core/widget/view/HorizontalStepsView.java
  12. 11 2
      app_core/common/src/main/java/com/core/widget/view/imp/SearchPresenter.java
  13. 66 41
      app_core/common/src/main/java/com/core/widget/view/model/SearchPoiParam.java
  14. 1 0
      app_core/common/src/main/res/layout/empty_locayion.xml
  15. 18 19
      app_modular/appcontact/src/main/java/com/uas/appcontact/ui/activity/ContactsActivity.java
  16. 2 3
      app_modular/appme/src/main/java/com/uas/appme/other/activity/BasicInfoActivity.java
  17. 1 0
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/presenter/WorkPresenter.java

+ 2 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/account/DataDownloadActivity.java

@@ -13,6 +13,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.android.volley.Response.ErrorListener;
 import com.android.volley.VolleyError;
+import com.common.LogUtil;
 import com.common.data.JSONUtil;
 import com.common.data.StringUtil;
 import com.umeng.analytics.MobclickAgent;
@@ -311,7 +312,7 @@ public class DataDownloadActivity extends BaseActivity {
     private void downloadAddressBook() {
         HashMap<String, String> params = new HashMap<String, String>();
         params.put("access_token", MyApplication.getInstance().mAccessToken);
-
+        LogUtil.i("mAccessToken=" + MyApplication.getInstance().mAccessToken);
         StringJsonArrayRequest<AttentionUser> request = new StringJsonArrayRequest<AttentionUser>(
                 mConfig.FRIENDS_ATTENTION_LIST, new ErrorListener() {
             @Override

+ 0 - 3
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/circle/SendShuoshuoActivity.java

@@ -146,9 +146,6 @@ public class SendShuoshuoActivity extends BaseActivity implements View.OnClickLi
                 if (viewType == 1) {
                     if (PermissionUtil.lacksPermissions(ct, Manifest.permission.CAMERA)) {
                         ToastUtil.showToast(ct,R.string.not_camera_permission);
-//                        Uri packageURI = Uri.parse("package:" + "com.tencent.WBlog");
-//                        Intent intent =  new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS,packageURI);
-//                        startActivity(intent);
                     } else {
                         showSelectPictureDialog();//添加
                     }

+ 9 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/circle/view/CardInfoActivity.java

@@ -35,6 +35,7 @@ import com.afollestad.materialdialogs.MaterialDialog;
 import com.android.volley.Response;
 import com.android.volley.Response.ErrorListener;
 import com.android.volley.VolleyError;
+import com.common.LogUtil;
 import com.common.data.StringUtil;
 import com.common.system.DisplayUtil;
 import com.common.system.PermissionUtil;
@@ -134,6 +135,7 @@ public class CardInfoActivity extends BaseActivity implements NewFriendListener
     private PopupWindow mMoreWindow;
     private View mMoreMenuView;
     private TextView mRemarkNameTv, mRemoveBlackTv, mAddBlackTv, mCancelAttentionTv, mDeleteAllTv;
+
     @TargetApi(Build.VERSION_CODES.HONEYCOMB)
     @SuppressLint("NewApi")
     @Override
@@ -294,6 +296,7 @@ public class CardInfoActivity extends BaseActivity implements NewFriendListener
         }
         return super.onOptionsItemSelected(item);
     }
+
     private void closeMorePopupWindow() {
         if (mMoreWindow != null) {
             mMoreWindow.dismiss();
@@ -303,6 +306,7 @@ public class CardInfoActivity extends BaseActivity implements NewFriendListener
         }
 
     }
+
     /**
      * 懒得判断操作的用户到底属于好友、企业、还是公司,直接发广播,让所有的名片盒页面都更新
      */
@@ -335,6 +339,8 @@ public class CardInfoActivity extends BaseActivity implements NewFriendListener
         Map<String, String> params = new HashMap<String, String>();
         params.put("access_token", MyApplication.getInstance().mAccessToken);
         params.put("userId", userId);
+        LogUtil.i("access_token=" + MyApplication.getInstance().mAccessToken);
+        LogUtil.i("userId=" + userId);
         StringJsonObjectRequest<User> request = new StringJsonObjectRequest<User>(mConfig.USER_GET_URL,
                 new Response.ErrorListener() {
                     @Override
@@ -346,7 +352,8 @@ public class CardInfoActivity extends BaseActivity implements NewFriendListener
 
             @Override
             public void onResponse(ObjectResult<User> result) {
-
+                LogUtil.i("result=" + result);
+                LogUtil.i("result=" + result.getData().toString());
                 boolean success = Result.defaultParser(mContext, result, true);
                 if (success && result.getData() != null) {
                     mUser = result.getData();
@@ -571,6 +578,7 @@ public class CardInfoActivity extends BaseActivity implements NewFriendListener
 
         dialog.show();
     }
+
     private void doPhone(String phone) {
         if (!StringUtil.isMobileNumber(phone)) {
             ToastUtil.showToast(ct, R.string.phone_number_format_error);

+ 3 - 0
WeiChat/src/main/res/layout/empty_locayion.xml

@@ -12,9 +12,12 @@
         android:paddingBottom="10dp"/>
 
     <TextView
+        android:id="@+id/messageTv"
         android:layout_marginTop="10dp"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
+        android:layout_marginLeft="30dp"
+        android:layout_marginRight="30dp"
         android:layout_below="@id/empty_img"
         android:layout_centerHorizontal="true"
         android:text="@string/not_find_company_search" />

+ 48 - 2
app_core/common/src/main/java/com/common/system/SystemUtil.java

@@ -17,6 +17,7 @@ import android.os.Build;
 import android.os.Environment;
 import android.os.StatFs;
 import android.os.SystemClock;
+import android.provider.Settings;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 
@@ -30,6 +31,7 @@ import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.FileReader;
 import java.io.IOException;
+import java.lang.reflect.Field;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
@@ -41,6 +43,11 @@ import java.util.UUID;
  */
 public class SystemUtil {
 
+    public static void turn2SetIntent(Context ct) {
+        Uri packageURI = Uri.parse("package:" + getCurrentPkgName(ct));
+        Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, packageURI);
+        ct.startActivity(intent);
+    }
 
     /*判断是否手机插入Sd卡*/
     public static boolean sdCardUseable() {
@@ -328,9 +335,48 @@ public class SystemUtil {
                     }).build();
 
             dialog.show();
-        } else if (mContext instanceof Activity){
-            PermissionUtil.requestPermission((Activity)mContext,PermissionUtil.DEFAULT_REQUEST, Manifest.permission.CALL_PHONE);
+        } else if (mContext instanceof Activity) {
+            PermissionUtil.requestPermission((Activity) mContext, PermissionUtil.DEFAULT_REQUEST, Manifest.permission.CALL_PHONE);
         }
     }
 
+    /**
+     * android 5.0之后如何获取当前运行的应用包名?
+     *
+     * @param context
+     * @return
+     */
+    public static String getCurrentPkgName(Context context) {
+        ActivityManager.RunningAppProcessInfo currentInfo = null;
+        Field field = null;
+        int START_TASK_TO_FRONT = 2;
+        String pkgName = null;
+        try {
+            field = ActivityManager.RunningAppProcessInfo.class.getDeclaredField("processState");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+        List appList = am.getRunningAppProcesses();
+        List<ActivityManager.RunningAppProcessInfo> processes = ((ActivityManager) context.getSystemService(
+                Context.ACTIVITY_SERVICE)).getRunningAppProcesses();
+        for (ActivityManager.RunningAppProcessInfo app : processes) {
+            if (app.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
+                Integer state = null;
+                try {
+                    state = field.getInt(app);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+                if (state != null && state == START_TASK_TO_FRONT) {
+                    currentInfo = app;
+                    break;
+                }
+            }
+        }
+        if (currentInfo != null) {
+            pkgName = currentInfo.processName;
+        }
+        return pkgName;
+    }
 }

+ 79 - 75
app_core/common/src/main/java/com/core/db/SQLiteRawUtil.java

@@ -9,86 +9,90 @@ import java.util.List;
 
 /**
  * 对原生SQL语句的一些支持
- * 
+ *
  * @author dty
- * 
  */
 public class SQLiteRawUtil {
-	public static final String CHAT_MESSAGE_TABLE_PREFIX = "msg_";
-	public static String getCreateChatMessageTableSql(String tableName) {
-		String sql = "CREATE TABLE IF NOT EXISTS "
-				+ tableName
-				+ " (_id INTEGER PRIMARY KEY AUTOINCREMENT,type INTEGER NOT NULL,timeSend INTEGER NOT NULL,packetId VARCHAR NOT NULL,timeReceive INTEGER,fromUserId VARCHAR,fromUserName VARCHAR,isMySend SMALLINT,content VARCHAR,filePath VARCHAR,location_y VARCHAR,location_x VARCHAR,isRead SMALLINT,isUpload SMALLINT,isDownload SMALLINT,messageState INTEGER,timeLen INTEGER , fileSize INTEGER,objectId VARCHAR,sipStatus INTEGER,sipDuration INTEGER,cardId VARCHAR)";
-		return sql;
-	}
+    public static final String CHAT_MESSAGE_TABLE_PREFIX = "msg_";
 
-	public static void createTableIfNotExist(SQLiteDatabase db, String tableName, String createTableSql) {
-		if (isTableExist(db, tableName)) {
-			return;
-		}
-		db.execSQL(createTableSql);
-	}
+    public static String getCreateChatMessageTableSql(String tableName) {
+        String sql = "CREATE TABLE IF NOT EXISTS "
+                + tableName
+                + " (_id INTEGER PRIMARY KEY AUTOINCREMENT,type INTEGER NOT NULL,timeSend INTEGER NOT NULL,packetId VARCHAR NOT NULL,timeReceive INTEGER,fromUserId VARCHAR,fromUserName VARCHAR,isMySend SMALLINT,content VARCHAR,filePath VARCHAR,location_y VARCHAR,location_x VARCHAR,isRead SMALLINT,isUpload SMALLINT,isDownload SMALLINT,messageState INTEGER,timeLen INTEGER , fileSize INTEGER,objectId VARCHAR,sipStatus INTEGER,sipDuration INTEGER,cardId VARCHAR)";
+        return sql;
+    }
 
-	public static boolean isTableExist(SQLiteDatabase db, String tableName) {
-		boolean result = false;
-		if (TextUtils.isEmpty(tableName.trim())) {
-			return false;
-		}
-		Cursor cursor = null;
-		try {
-			String sql = "select count(*) as c from Sqlite_master  where type ='table' and name ='" + tableName.trim() + "' ";
-			cursor = db.rawQuery(sql, null);
-			if (cursor.moveToNext()) {
-				int count = cursor.getInt(0);
-				if (count > 0) {
-					result = true;
-				}
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
-		} finally {
-			if (cursor != null) {
-				cursor.close();
-			}
-		}
-		return result;
-	}
+    public static void createTableIfNotExist(SQLiteDatabase db, String tableName, String createTableSql) {
+        if (isTableExist(db, tableName)) {
+            return;
+        }
+        db.execSQL(createTableSql);
+    }
 
-	public static void dropTable(SQLiteDatabase db, String tableName) {
-		String sql = "drop table " + tableName;
-		db.execSQL(sql);
-	}
+    public static boolean isTableExist(SQLiteDatabase db, String tableName) {
+        boolean result = false;
+        if (TextUtils.isEmpty(tableName.trim())) {
+            return false;
+        }
+        Cursor cursor = null;
+        try {
+            String sql = "select count(*) as c from Sqlite_master  where type ='table' and name ='" + tableName.trim() + "' ";
+            cursor = db.rawQuery(sql, null);
+            if (cursor.moveToNext()) {
+                int count = cursor.getInt(0);
+                if (count > 0) {
+                    result = true;
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (cursor != null) {
+                cursor.close();
+            }
+        }
+        return result;
+    }
 
-	/**
-	 * 获取当前用户的消息表
-	 * 
-	 * @param db
-	 * @param
-	 * @return
-	 */
-	public static List<String> getUserChatMessageTables(SQLiteDatabase db, String ownerId) {
-		String tablePrefix = CHAT_MESSAGE_TABLE_PREFIX + ownerId;
-		Cursor cursor = null;
-		try {
-			String sql = "select name from Sqlite_master where type ='table' and name like '" + tablePrefix + "%'";
-			cursor = db.rawQuery(sql, null);
-			if (cursor != null) {
-				List<String> tables = new ArrayList<String>();
-				while (cursor.moveToNext()) {
-					String name = cursor.getString(0);
-					if (!TextUtils.isEmpty(name)) {
-						tables.add(name);
-					}
-				}
-				return tables;
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
-		} finally {
-			if (cursor != null) {
-				cursor.close();
-			}
-		}
-		return null;
-	}
+    public static void dropTable(SQLiteDatabase db, String tableName) {
+        String sql = "drop table " + tableName;
+        try {
+            db.execSQL(sql);
+        } catch (Exception e) {
+
+        }
+    }
+
+    /**
+     * 获取当前用户的消息表
+     *
+     * @param db
+     * @param
+     * @return
+     */
+    public static List<String> getUserChatMessageTables(SQLiteDatabase db, String ownerId) {
+        String tablePrefix = CHAT_MESSAGE_TABLE_PREFIX + ownerId;
+        Cursor cursor = null;
+        try {
+            String sql = "select name from Sqlite_master where type ='table' and name like '" + tablePrefix + "%'";
+            cursor = db.rawQuery(sql, null);
+            if (cursor != null) {
+                List<String> tables = new ArrayList<String>();
+                while (cursor.moveToNext()) {
+                    String name = cursor.getString(0);
+                    if (!TextUtils.isEmpty(name)) {
+                        tables.add(name);
+                    }
+                }
+                return tables;
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (cursor != null) {
+                cursor.close();
+            }
+        }
+        return null;
+    }
 }

+ 321 - 318
app_core/common/src/main/java/com/core/utils/helper/LoginHelper.java

@@ -10,6 +10,7 @@ import android.util.Log;
 import com.alibaba.fastjson.JSON;
 import com.android.volley.Response;
 import com.android.volley.VolleyError;
+import com.common.LogUtil;
 import com.common.system.SystemUtil;
 import com.core.app.AppConfig;
 import com.core.app.MyApplication;
@@ -29,326 +30,328 @@ import java.util.Map;
 /**
  * 当前登陆用户的帮助类
  * token
- * 
  */
 public class LoginHelper {
-	public static final String ACTION_LOGIN = AppConfig.sPackageName + ".action.login";// 登陆
-	public static final String ACTION_LOGOUT = AppConfig.sPackageName + ".action.logout";// 用户手动注销登出
-	public static final String ACTION_CONFLICT = AppConfig.sPackageName + ".action.conflict";// 登陆冲突(另外一个设备登陆了)
-	public static final String ACTION_TOKEN= AppConfig.sPackageName + ".action.token";// token异常
-	// 用户需要重新登陆,更新本地数据(可能是STATUS_USER_TOKEN_OVERDUE,STATUS_USER_NO_UPDATE,STATUS_USER_TOKEN_CHANGE三种状态之一)
-	public static final String ACTION_NEED_UPDATE = AppConfig.sPackageName + ".action.need_update";
-	public static final String ACTION_LOGIN_GIVE_UP = AppConfig.sPackageName + ".action.login_give_up";// 在下载资料的时候,没下载完就放弃登陆了
-	/* 信息完整程度由低到高,从第2级别开始,MyApplication中的mLoginUser是有值得 */
-	/* 没有用户,即游客(不需要进行其他操作) */
-	public static final int STATUS_NO_USER = 0;
-	/* 有用户,但是不完整,只有手机号,可能是之前注销过(不需要进行其他操作) */
-	public static final int STATUS_USER_SIMPLE_TELPHONE = 1;
-	/* 有用户,但是本地Token已经过期了(需要弹出对话框提示:本地Token已经过期,重新登陆) */
-	public static final int STATUS_USER_TOKEN_OVERDUE = 2;
-	/*
-	 * 有用户,本地Token未过期,但是可能信息不是最新的,即在上次登陆之后,没有更新完数据就退出了app (需要检测Token是否变更,变更即提示登陆,未变更则提示更新资料)
-	 */
-	public static final int STATUS_USER_NO_UPDATE = 3;
-	/*
-	 * 用户资料全部完整,但是Token已经变更了,提示重新登陆
-	 */
-	public static final int STATUS_USER_TOKEN_CHANGE = 4;
-	/*
-	 * 用户资料全部完整,但是还要检测Token是否变更 (需要检测Token是否变更,变更即提示登陆) 此状态比较特殊,因为有可能Token没有变更,不需要在进行登陆操作。<br/> 在检测Token接口调用失败的情况下,默认为一个不需要重新登陆的用户。
-	 * 在检测Token接口调用成功的情况下,此状态会立即过度到STATUS_USER_VALIDATION状态。
-	 */
-	public static final int STATUS_USER_FULL = 5;
-	/*
-	 * 用户资料全部完整,并且已经检测Token没有变更,或者新登录更新完成 (不需要进行其他操作)
-	 */
-	public static final int STATUS_USER_VALIDATION = 6;//
-
-	// 获取登陆和登出的action filter
-	public static IntentFilter getLogInOutActionFilter() {
-		IntentFilter intentFilter = new IntentFilter();
-		intentFilter.addAction(ACTION_LOGIN);
-		intentFilter.addAction(ACTION_LOGOUT);
-		intentFilter.addAction(ACTION_CONFLICT);
-		intentFilter.addAction(ACTION_NEED_UPDATE);
-		intentFilter.addAction(ACTION_LOGIN_GIVE_UP);
-		return intentFilter;
-	}
-
-	// 登陆广播,且登陆的用户为MyApplication.getInstance().mLoginUser
-	public static void broadcastLogin(Context context) {
-		Intent intent = new Intent(ACTION_LOGIN);
-		context.sendBroadcast(intent);
-	}
-
-	// 登出广播
-	public static void broadcastLogout(Context context) {
-		Intent intent = new Intent(ACTION_LOGOUT);
-		context.sendBroadcast(intent);
-	}
-
-	// 放弃登陆
-	public static void broadcastLoginGiveUp(Context context) {
-		Intent intent = new Intent(ACTION_LOGIN_GIVE_UP);
-		context.sendBroadcast(intent);
-	}
-
-	// 登陆冲突(另外一个设备登陆了)
-	public static void broadcastConflict(Context context) {
-		Intent intent = new Intent(ACTION_CONFLICT);
-		context.sendBroadcast(intent);
-	}
-	// 登陆冲突(另外一个设备登陆了)
-	public static void broadcastToken(Context context) {
-		Intent intent = new Intent(ACTION_TOKEN);
-		context.sendBroadcast(intent);
-	}
-	public static void broadcastNeedUpdate(Context context) {
-		Intent intent = new Intent(ACTION_NEED_UPDATE);
-		context.sendBroadcast(intent);
-	}
-
-	/* 进入MainActivity,判断当前是游客,还是之前已经登陆过的用户 */
-	public static int prepareUser(Context context) {
-		int userStatus = STATUS_NO_USER;
-		boolean idIsEmpty = TextUtils.isEmpty(UserSp.getInstance(context).getUserId(""));
-		boolean telephoneIsEmpty = TextUtils.isEmpty(UserSp.getInstance(context).getTelephone(null));
-
-		if (!idIsEmpty && !telephoneIsEmpty) {// 用户标识都不为空,那么就能代表一个完整的用户
-			// 进入之前,加载本地已经存在的数据
-			String userId = UserSp.getInstance(context).getUserId("");
-			User user = UserDao.getInstance().getUserByUserId(userId);
-
-			if (!LoginHelper.isUserValidation(user)) {// 用户数据错误,那么就认为是一个游客
-				userStatus = STATUS_NO_USER;
-			} else {
-				MyApplication.getInstance().mLoginUser = user;
-				MyApplication.getInstance().mAccessToken = UserSp.getInstance(context).getAccessToken(null);
-				MyApplication.getInstance().mExpiresIn = UserSp.getInstance(context).getExpiresIn(0);
-
-				if (LoginHelper.isTokenValidation()) {// Token未过期
-					boolean isUpdate = UserSp.getInstance(context).isUpdate(true);
-					if (isUpdate) {
-						Log.i("Arison", "prepareUser() returned: " + "userStatus:"+STATUS_USER_FULL);
-						userStatus = STATUS_USER_FULL;
-					} else {
-						Log.i("Arison", "prepareUser() returned: " + "userStatus:"+STATUS_USER_NO_UPDATE);
-						userStatus = STATUS_USER_NO_UPDATE;
-					}
-				} else {// Token过期
-					//STATUS_USER_TOKEN_OVERDUE
-					userStatus = STATUS_USER_TOKEN_OVERDUE;
-				}
-			}
-		} else if (!idIsEmpty) {// (适用于切换账号之后的操作)手机号不为空
-			userStatus = STATUS_USER_SIMPLE_TELPHONE;
-		} else {
-			userStatus = STATUS_NO_USER;
-		}
-		MyApplication.getInstance().mUserStatus = userStatus;
-		return userStatus;
-	}
-
-	// User数据是否能代表一个有效的用户
-	public static boolean isUserValidation(User user) {
-		if (user == null) {
-			return false;
-		}
-		if (TextUtils.isEmpty(user.getUserId())) {
-			return false;
-		}
-		if (TextUtils.isEmpty(user.getTelephone())) {
-			return false;
-		}
-		if (TextUtils.isEmpty(user.getPassword())) {
-			return false;
-		}
-		return !TextUtils.isEmpty(user.getNickName());
-	}
-
-	/**
-	 * AccessToken 是否是有效的
-	 * 
-	 * @return
-	 */
-	public static boolean isTokenValidation() {
-		if (TextUtils.isEmpty(MyApplication.getInstance().mAccessToken)) {
-			return false;
-		}
-		return MyApplication.getInstance().mExpiresIn >= System.currentTimeMillis();
-	}
-
-	/**
-	 * @desc:保存当前登录用户的信息
-	 * @author:Administrator on 2016/1/27 15:13
-	 */
-	public static boolean setLoginUser(Context context, String telephone, String password, ObjectResult<LoginRegisterResult> result) {
-		if (result == null) {
-			return false;
-		}
-		if (result.getResultCode() != Result.CODE_SUCCESS) {
-			return false;
-		}
-		if (result.getData() == null) {
-			return false;
-		}
-		// 保存当前登陆的用户信息和Token信息作为全局变量,方便调用
-		User user = MyApplication.getInstance().mLoginUser;
-		user.setTelephone(telephone);
-		user.setPassword(password);
-		user.setUserId(result.getData().getUserId());
-		user.setNickName(result.getData().getNickName());
-		// user.setCompanyId(result.getData().getCompanyId());
-		if (!LoginHelper.isUserValidation(user)) {// 请求下来的用户数据不完整有错误
-			return false;
-		}
-
-		MyApplication.getInstance().mAccessToken = result.getData().getAccess_token();
-		long expires_in = result.getData().getExpires_in() * 1000L + System.currentTimeMillis();
-		// long expires_in = 60 * 1000L + System.currentTimeMillis();// 测试 1分钟就过期的Token
-		MyApplication.getInstance().mExpiresIn = expires_in;
-
-		if (result.getData().getLogin() != null) {
-			user.setOfflineTime(result.getData().getLogin().getOfflineTime());
-		}
-
-		// 保存基本信息到数据库
-		boolean saveAble = UserDao.getInstance().saveUserLogin(user);
-		if (!saveAble) {
-			return false;
-		}
-
-		// 保存最后一次登录的用户信息到Sp,用于免登陆
-		UserSp.getInstance(MyApplication.getInstance()).setUserId(result.getData().getUserId());
-		UserSp.getInstance(MyApplication.getInstance()).setTelephone(telephone);
-		UserSp.getInstance(MyApplication.getInstance()).setAccessToken(result.getData().getAccess_token());
-		UserSp.getInstance(MyApplication.getInstance()).setExpiresIn(expires_in);
-		MyApplication.getInstance().mUserStatusChecked = true;
-		MyApplication.getInstance().mUserStatus = STATUS_USER_VALIDATION;
-
-		return true;
-	}
-
-	/**
-	 * 检测Status,是否要弹出更新用户状态的对话框
-	 *
-	 * @param activity
-	 *            是否弹出对话框有本方法内部逻辑决定。<br/>
-	 *            是否继续循环检测(检测未成功的情况下),<br/>
-	 *            由 MyApplication.getInstance().mUserStatusChecked值决定,( 因为方法内部有异步操作,不能直接返回值来判断) 在MainActivity中进行重复检测的判定
-	 */
-	public static void checkStatusForUpdate(final Activity activity, final OnCheckedFailedListener listener) {
-		if (MyApplication.getInstance().mUserStatusChecked) {
-			return;
-		}
-		final int status = MyApplication.getInstance().mUserStatus;
-		if (status == STATUS_NO_USER || status == STATUS_USER_SIMPLE_TELPHONE) {
-			MyApplication.getInstance().mUserStatusChecked = true;
-			return;
-		}
-
-		final User user = MyApplication.getInstance().mLoginUser;
-		if (!isUserValidation(user)) {// 如果是用户数据不完整,那么就可能是数据错误,将状态变为STATUS_NO_USER和STATUS_USER_SIMPLE_TELPHONE
-			boolean telephoneIsEmpty = TextUtils.isEmpty(UserSp.getInstance(activity).getTelephone(null));
-			if (telephoneIsEmpty) {
-				MyApplication.getInstance().mUserStatus = STATUS_NO_USER;
-			} else {
-				MyApplication.getInstance().mUserStatus = STATUS_USER_SIMPLE_TELPHONE;
-			}
-			return;
-		}
+    public static final String ACTION_LOGIN = AppConfig.sPackageName + ".action.login";// 登陆
+    public static final String ACTION_LOGOUT = AppConfig.sPackageName + ".action.logout";// 用户手动注销登出
+    public static final String ACTION_CONFLICT = AppConfig.sPackageName + ".action.conflict";// 登陆冲突(另外一个设备登陆了)
+    public static final String ACTION_TOKEN = AppConfig.sPackageName + ".action.token";// token异常
+    // 用户需要重新登陆,更新本地数据(可能是STATUS_USER_TOKEN_OVERDUE,STATUS_USER_NO_UPDATE,STATUS_USER_TOKEN_CHANGE三种状态之一)
+    public static final String ACTION_NEED_UPDATE = AppConfig.sPackageName + ".action.need_update";
+    public static final String ACTION_LOGIN_GIVE_UP = AppConfig.sPackageName + ".action.login_give_up";// 在下载资料的时候,没下载完就放弃登陆了
+    /* 信息完整程度由低到高,从第2级别开始,MyApplication中的mLoginUser是有值得 */
+    /* 没有用户,即游客(不需要进行其他操作) */
+    public static final int STATUS_NO_USER = 0;
+    /* 有用户,但是不完整,只有手机号,可能是之前注销过(不需要进行其他操作) */
+    public static final int STATUS_USER_SIMPLE_TELPHONE = 1;
+    /* 有用户,但是本地Token已经过期了(需要弹出对话框提示:本地Token已经过期,重新登陆) */
+    public static final int STATUS_USER_TOKEN_OVERDUE = 2;
+    /*
+     * 有用户,本地Token未过期,但是可能信息不是最新的,即在上次登陆之后,没有更新完数据就退出了app (需要检测Token是否变更,变更即提示登陆,未变更则提示更新资料)
+     */
+    public static final int STATUS_USER_NO_UPDATE = 3;
+    /*
+     * 用户资料全部完整,但是Token已经变更了,提示重新登陆
+     */
+    public static final int STATUS_USER_TOKEN_CHANGE = 4;
+    /*
+     * 用户资料全部完整,但是还要检测Token是否变更 (需要检测Token是否变更,变更即提示登陆) 此状态比较特殊,因为有可能Token没有变更,不需要在进行登陆操作。<br/> 在检测Token接口调用失败的情况下,默认为一个不需要重新登陆的用户。
+     * 在检测Token接口调用成功的情况下,此状态会立即过度到STATUS_USER_VALIDATION状态。
+     */
+    public static final int STATUS_USER_FULL = 5;
+    /*
+     * 用户资料全部完整,并且已经检测Token没有变更,或者新登录更新完成 (不需要进行其他操作)
+     */
+    public static final int STATUS_USER_VALIDATION = 6;//
+
+    // 获取登陆和登出的action filter
+    public static IntentFilter getLogInOutActionFilter() {
+        IntentFilter intentFilter = new IntentFilter();
+        intentFilter.addAction(ACTION_LOGIN);
+        intentFilter.addAction(ACTION_LOGOUT);
+        intentFilter.addAction(ACTION_CONFLICT);
+        intentFilter.addAction(ACTION_NEED_UPDATE);
+        intentFilter.addAction(ACTION_LOGIN_GIVE_UP);
+        return intentFilter;
+    }
+
+    // 登陆广播,且登陆的用户为MyApplication.getInstance().mLoginUser
+    public static void broadcastLogin(Context context) {
+        Intent intent = new Intent(ACTION_LOGIN);
+        context.sendBroadcast(intent);
+    }
+
+    // 登出广播
+    public static void broadcastLogout(Context context) {
+        Intent intent = new Intent(ACTION_LOGOUT);
+        context.sendBroadcast(intent);
+    }
+
+    // 放弃登陆
+    public static void broadcastLoginGiveUp(Context context) {
+        Intent intent = new Intent(ACTION_LOGIN_GIVE_UP);
+        context.sendBroadcast(intent);
+    }
+
+    // 登陆冲突(另外一个设备登陆了)
+    public static void broadcastConflict(Context context) {
+        Intent intent = new Intent(ACTION_CONFLICT);
+        context.sendBroadcast(intent);
+    }
+
+    // 登陆冲突(另外一个设备登陆了)
+    public static void broadcastToken(Context context) {
+        Intent intent = new Intent(ACTION_TOKEN);
+        context.sendBroadcast(intent);
+    }
+
+    public static void broadcastNeedUpdate(Context context) {
+        Intent intent = new Intent(ACTION_NEED_UPDATE);
+        context.sendBroadcast(intent);
+    }
+
+    /* 进入MainActivity,判断当前是游客,还是之前已经登陆过的用户 */
+    public static int prepareUser(Context context) {
+        int userStatus = STATUS_NO_USER;
+        boolean idIsEmpty = TextUtils.isEmpty(UserSp.getInstance(context).getUserId(""));
+        boolean telephoneIsEmpty = TextUtils.isEmpty(UserSp.getInstance(context).getTelephone(null));
+
+        if (!idIsEmpty && !telephoneIsEmpty) {// 用户标识都不为空,那么就能代表一个完整的用户
+            // 进入之前,加载本地已经存在的数据
+            String userId = UserSp.getInstance(context).getUserId("");
+            User user = UserDao.getInstance().getUserByUserId(userId);
+
+            if (!LoginHelper.isUserValidation(user)) {// 用户数据错误,那么就认为是一个游客
+                userStatus = STATUS_NO_USER;
+            } else {
+                MyApplication.getInstance().mLoginUser = user;
+                MyApplication.getInstance().mAccessToken = UserSp.getInstance(context).getAccessToken(null);
+                MyApplication.getInstance().mExpiresIn = UserSp.getInstance(context).getExpiresIn(0);
+
+                if (LoginHelper.isTokenValidation()) {// Token未过期
+                    boolean isUpdate = UserSp.getInstance(context).isUpdate(true);
+                    if (isUpdate) {
+                        Log.i("Arison", "prepareUser() returned: " + "userStatus:" + STATUS_USER_FULL);
+                        userStatus = STATUS_USER_FULL;
+                    } else {
+                        Log.i("Arison", "prepareUser() returned: " + "userStatus:" + STATUS_USER_NO_UPDATE);
+                        userStatus = STATUS_USER_NO_UPDATE;
+                    }
+                } else {// Token过期
+                    //STATUS_USER_TOKEN_OVERDUE
+                    userStatus = STATUS_USER_TOKEN_OVERDUE;
+                }
+            }
+        } else if (!idIsEmpty) {// (适用于切换账号之后的操作)手机号不为空
+            userStatus = STATUS_USER_SIMPLE_TELPHONE;
+        } else {
+            userStatus = STATUS_NO_USER;
+        }
+        MyApplication.getInstance().mUserStatus = userStatus;
+        return userStatus;
+    }
+
+    // User数据是否能代表一个有效的用户
+    public static boolean isUserValidation(User user) {
+        if (user == null) {
+            return false;
+        }
+        if (TextUtils.isEmpty(user.getUserId())) {
+            return false;
+        }
+        if (TextUtils.isEmpty(user.getTelephone())) {
+            return false;
+        }
+        if (TextUtils.isEmpty(user.getPassword())) {
+            return false;
+        }
+        return !TextUtils.isEmpty(user.getNickName());
+    }
+
+    /**
+     * AccessToken 是否是有效的
+     *
+     * @return
+     */
+    public static boolean isTokenValidation() {
+        if (TextUtils.isEmpty(MyApplication.getInstance().mAccessToken)) {
+            return false;
+        }
+        return MyApplication.getInstance().mExpiresIn >= System.currentTimeMillis();
+    }
+
+    /**
+     * @desc:保存当前登录用户的信息
+     * @author:Administrator on 2016/1/27 15:13
+     */
+    public static boolean setLoginUser(Context context, String telephone, String password, ObjectResult<LoginRegisterResult> result) {
+        if (result == null) {
+            return false;
+        }
+        if (result.getResultCode() != Result.CODE_SUCCESS) {
+            return false;
+        }
+        if (result.getData() == null) {
+            return false;
+        }
+        // 保存当前登陆的用户信息和Token信息作为全局变量,方便调用
+        User user = MyApplication.getInstance().mLoginUser;
+        user.setTelephone(telephone);
+        user.setPassword(password);
+        user.setUserId(result.getData().getUserId());
+        user.setNickName(result.getData().getNickName());
+        // user.setCompanyId(result.getData().getCompanyId());
+        if (!LoginHelper.isUserValidation(user)) {// 请求下来的用户数据不完整有错误
+            return false;
+        }
+
+        MyApplication.getInstance().mAccessToken = result.getData().getAccess_token();
+        LogUtil.i("mAccessToken=" + MyApplication.getInstance().mAccessToken);
+        long expires_in = result.getData().getExpires_in() * 1000L + System.currentTimeMillis();
+        // long expires_in = 60 * 1000L + System.currentTimeMillis();// 测试 1分钟就过期的Token
+        MyApplication.getInstance().mExpiresIn = expires_in;
+
+        if (result.getData().getLogin() != null) {
+            user.setOfflineTime(result.getData().getLogin().getOfflineTime());
+        }
+
+        // 保存基本信息到数据库
+        boolean saveAble = UserDao.getInstance().saveUserLogin(user);
+        if (!saveAble) {
+            return false;
+        }
+
+        // 保存最后一次登录的用户信息到Sp,用于免登陆
+        UserSp.getInstance(MyApplication.getInstance()).setUserId(result.getData().getUserId());
+        UserSp.getInstance(MyApplication.getInstance()).setTelephone(telephone);
+        UserSp.getInstance(MyApplication.getInstance()).setAccessToken(result.getData().getAccess_token());
+        UserSp.getInstance(MyApplication.getInstance()).setExpiresIn(expires_in);
+        MyApplication.getInstance().mUserStatusChecked = true;
+        MyApplication.getInstance().mUserStatus = STATUS_USER_VALIDATION;
+
+        return true;
+    }
+
+    /**
+     * 检测Status,是否要弹出更新用户状态的对话框
+     *
+     * @param activity 是否弹出对话框有本方法内部逻辑决定。<br/>
+     *                 是否继续循环检测(检测未成功的情况下),<br/>
+     *                 由 MyApplication.getInstance().mUserStatusChecked值决定,( 因为方法内部有异步操作,不能直接返回值来判断) 在MainActivity中进行重复检测的判定
+     */
+    public static void checkStatusForUpdate(final Activity activity, final OnCheckedFailedListener listener) {
+        if (MyApplication.getInstance().mUserStatusChecked) {
+            return;
+        }
+        final int status = MyApplication.getInstance().mUserStatus;
+        if (status == STATUS_NO_USER || status == STATUS_USER_SIMPLE_TELPHONE) {
+            MyApplication.getInstance().mUserStatusChecked = true;
+            return;
+        }
+
+        final User user = MyApplication.getInstance().mLoginUser;
+        if (!isUserValidation(user)) {// 如果是用户数据不完整,那么就可能是数据错误,将状态变为STATUS_NO_USER和STATUS_USER_SIMPLE_TELPHONE
+            boolean telephoneIsEmpty = TextUtils.isEmpty(UserSp.getInstance(activity).getTelephone(null));
+            if (telephoneIsEmpty) {
+                MyApplication.getInstance().mUserStatus = STATUS_NO_USER;
+            } else {
+                MyApplication.getInstance().mUserStatus = STATUS_USER_SIMPLE_TELPHONE;
+            }
+            return;
+        }
         //6
-		if (status == STATUS_USER_VALIDATION) {
-			MyApplication.getInstance().mUserStatusChecked = true;
-			broadcastLogin(activity);
-			return;
-		}
-           //4
-		if (status == STATUS_USER_TOKEN_CHANGE) {// Token已经变更,直接提示,不需要再检测Token是否变更
-			MyApplication.getInstance().mUserStatusChecked = true;
-			broadcastNeedUpdate(activity);
-			return;
-		}
-
-		/**
-		 * 能往下执行的只有三种状态 <br/>
-		 * public static final int STATUS_USER_TOKEN_OVERDUE = 2;<br/>
-		 * public static final int STATUS_USER_NO_UPDATE = 3;<br/>
-		 * public static final int STATUS_USER_FULL = 5;<br/>
-		 */
-
-		Map<String, String> params = new HashMap<String, String>();
-		params.put("access_token", MyApplication.getInstance().mAccessToken);
-		params.put("userId", user.getUserId());
-		params.put("serial", SystemUtil.getDeviceId(activity));
-
-		// 地址信息
-		double latitude = MyApplication.getInstance().getBdLocationHelper().getLatitude();
-		double longitude = MyApplication.getInstance().getBdLocationHelper().getLongitude();
-		if (latitude != 0)
-			params.put("latitude", String.valueOf(latitude));
-		if (longitude != 0)
-			params.put("longitude", String.valueOf(longitude));
-
-		StringJsonObjectRequest<LoginAuto> request = new StringJsonObjectRequest<LoginAuto>(MyApplication.getInstance().getConfig().USER_LOGIN_AUTO,
-				new Response.ErrorListener() {
-
-					@Override
-					public void onErrorResponse(VolleyError arg0) {
-						if (listener != null) {
-							listener.onCheckFailed();
-						}
-					}
-				}, new StringJsonObjectRequest.Listener<LoginAuto>() {
-					@Override
-					public void onResponse(ObjectResult<LoginAuto> result) {
-						boolean success = Result.defaultParser(activity, result, false);
-						if (success && result.getData() != null) {
-							Log.i("Arison","设备登陆信息:"+ JSON.toJSONString(result));
-							MyApplication.getInstance().mUserStatusChecked = true;// 检测Token成功
-							int tokenExists = result.getData().getTokenExists();// 1=令牌存在、0=令牌不存在
-							int serialStatus = result.getData().getSerialStatus();// 1=没有设备号、2=设备号一致、3=设备号不一致
-							if (serialStatus == 2) {// 设备号一致,说明没有切换过设备
-								if (tokenExists == 1) {// Token也存在,说明不用登陆了
-									if (status == STATUS_USER_FULL) {// 本地数据完整,那么就免登陆使用
-										MyApplication.getInstance().mUserStatus = STATUS_USER_VALIDATION;
-									} else {
-										// do no thing 依然保持其他的状态
-									}
-								} else {// Token 不存在
-									if (status == STATUS_USER_FULL) {// 数据也完整,那么就是Token过期
-										MyApplication.getInstance().mUserStatus = STATUS_USER_TOKEN_OVERDUE;
-									} else {
-										// do no thing 依然保持其他的状态
-									}
-								}
-							} else {// 设备号不一致,那么就是切换过手机
-								MyApplication.getInstance().mUserStatus = STATUS_USER_TOKEN_CHANGE;
-
-								//TODO 可能存在异常提示账号在另一设备登陆情况
-
-							}
-
-							// 最后判断是否要跳转弹出对话框
-							if (MyApplication.getInstance().mUserStatus != STATUS_USER_VALIDATION) {
-								broadcastNeedUpdate(activity);
-							} else {// 如果是用户已经完整验证,那么发出用户登录的广播
-								broadcastLogin(activity);
-							}
-						} else {
-							if (listener != null) {
-								listener.onCheckFailed();
-							}
-						}
-					}
-				}, LoginAuto.class, params);
-		request.setTag("checkStatus");
-		((BaseActivity)activity).addDefaultRequest(request);
-	}
-   //方法结束
-	public interface OnCheckedFailedListener {// 检查Token失败才回调,然后外部在继续下一次检测
-
-		void onCheckFailed();
-	}
+        if (status == STATUS_USER_VALIDATION) {
+            MyApplication.getInstance().mUserStatusChecked = true;
+            broadcastLogin(activity);
+            return;
+        }
+        //4
+        if (status == STATUS_USER_TOKEN_CHANGE) {// Token已经变更,直接提示,不需要再检测Token是否变更
+            MyApplication.getInstance().mUserStatusChecked = true;
+            broadcastNeedUpdate(activity);
+            return;
+        }
+
+        /**
+         * 能往下执行的只有三种状态 <br/>
+         * public static final int STATUS_USER_TOKEN_OVERDUE = 2;<br/>
+         * public static final int STATUS_USER_NO_UPDATE = 3;<br/>
+         * public static final int STATUS_USER_FULL = 5;<br/>
+         */
+
+        Map<String, String> params = new HashMap<String, String>();
+        params.put("access_token", MyApplication.getInstance().mAccessToken);
+        params.put("userId", user.getUserId());
+        params.put("serial", SystemUtil.getDeviceId(activity));
+
+        // 地址信息
+        double latitude = MyApplication.getInstance().getBdLocationHelper().getLatitude();
+        double longitude = MyApplication.getInstance().getBdLocationHelper().getLongitude();
+        if (latitude != 0)
+            params.put("latitude", String.valueOf(latitude));
+        if (longitude != 0)
+            params.put("longitude", String.valueOf(longitude));
+
+        StringJsonObjectRequest<LoginAuto> request = new StringJsonObjectRequest<LoginAuto>(MyApplication.getInstance().getConfig().USER_LOGIN_AUTO,
+                new Response.ErrorListener() {
+
+                    @Override
+                    public void onErrorResponse(VolleyError arg0) {
+                        if (listener != null) {
+                            listener.onCheckFailed();
+                        }
+                    }
+                }, new StringJsonObjectRequest.Listener<LoginAuto>() {
+            @Override
+            public void onResponse(ObjectResult<LoginAuto> result) {
+                boolean success = Result.defaultParser(activity, result, false);
+                if (success && result.getData() != null) {
+                    Log.i("Arison", "设备登陆信息:" + JSON.toJSONString(result));
+                    MyApplication.getInstance().mUserStatusChecked = true;// 检测Token成功
+                    int tokenExists = result.getData().getTokenExists();// 1=令牌存在、0=令牌不存在
+                    int serialStatus = result.getData().getSerialStatus();// 1=没有设备号、2=设备号一致、3=设备号不一致
+                    if (serialStatus == 2) {// 设备号一致,说明没有切换过设备
+                        if (tokenExists == 1) {// Token也存在,说明不用登陆了
+                            if (status == STATUS_USER_FULL) {// 本地数据完整,那么就免登陆使用
+                                MyApplication.getInstance().mUserStatus = STATUS_USER_VALIDATION;
+                            } else {
+                                // do no thing 依然保持其他的状态
+                            }
+                        } else {// Token 不存在
+                            if (status == STATUS_USER_FULL) {// 数据也完整,那么就是Token过期
+                                MyApplication.getInstance().mUserStatus = STATUS_USER_TOKEN_OVERDUE;
+                            } else {
+                                // do no thing 依然保持其他的状态
+                            }
+                        }
+                    } else {// 设备号不一致,那么就是切换过手机
+                        MyApplication.getInstance().mUserStatus = STATUS_USER_TOKEN_CHANGE;
+
+                        //TODO 可能存在异常提示账号在另一设备登陆情况
+
+                    }
+
+                    // 最后判断是否要跳转弹出对话框
+                    if (MyApplication.getInstance().mUserStatus != STATUS_USER_VALIDATION) {
+                        broadcastNeedUpdate(activity);
+                    } else {// 如果是用户已经完整验证,那么发出用户登录的广播
+                        broadcastLogin(activity);
+                    }
+                } else {
+                    if (listener != null) {
+                        listener.onCheckFailed();
+                    }
+                }
+            }
+        }, LoginAuto.class, params);
+        request.setTag("checkStatus");
+        ((BaseActivity) activity).addDefaultRequest(request);
+    }
+
+    //方法结束
+    public interface OnCheckedFailedListener {// 检查Token失败才回调,然后外部在继续下一次检测
+
+        void onCheckFailed();
+    }
 
 }

+ 0 - 1
app_core/common/src/main/java/com/core/utils/pictureselector/FileTraversal.java

@@ -34,7 +34,6 @@ public class FileTraversal implements Parcelable {
 			FileTraversal ft=new FileTraversal();
 			ft.filename= source.readString();
 			ft.filecontent= source.readArrayList(FileTraversal.class.getClassLoader());
-
 			return ft;
 		}
 

+ 144 - 143
app_core/common/src/main/java/com/core/utils/pictureselector/Util.java

@@ -19,151 +19,152 @@ import java.util.TreeSet;
 
 public class Util {
 
-	Context context;
-
-	public Util(Context context) {
-		this.context=context;
-	}
-
-	/**
-	 * 获取全部图片地址
-	 * @return
-	 */
-	public ArrayList<String>  listAlldir(){
-		Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
-		Uri uri = intent.getData();
-		ArrayList<String> list = new ArrayList<String>();
-		String[] proj ={MediaStore.Images.Media.DATA};
-		Cursor cursor = context.getContentResolver().query(uri, proj, null, null, null);//managedQuery(uri, proj, null, null, null);
-		while(cursor.moveToNext()){
-			String path =cursor.getString(0);
-			list.add(new File(path).getAbsolutePath());
-		}
-		return list;
-	}
-
-	public List<FileTraversal> LocalImgFileList(){
-		List<FileTraversal> data=new ArrayList<FileTraversal>();
-		String filename="";
-		List<String> allimglist=listAlldir();
-		List<String> retulist=new ArrayList<String>();
-		if (allimglist!=null) {
-			Set set = new TreeSet();
-			String []str;
-			for (int i = 0; i < allimglist.size(); i++) {
-				retulist.add(getfileinfo(allimglist.get(i)));
-			}
-			for (int i = 0; i < retulist.size(); i++) {
-				set.add(retulist.get(i));
-			}
-			str= (String[]) set.toArray(new String[0]);
-			for (int i = 0; i < str.length; i++) {
-				filename=str[i];
-				FileTraversal ftl= new FileTraversal();
-				ftl.filename=filename;
-				data.add(ftl);
-			}
-
-			for (int i = 0; i < data.size(); i++) {
-				for (int j = 0; j < allimglist.size(); j++) {
-					if (data.get(i).filename.equals(getfileinfo(allimglist.get(j)))) {
-						data.get(i).filecontent.add(allimglist.get(j));
-					}
-				}
-			}
-		}
-		return data;
-	}
-
-	//显示原生图片尺寸大小
-	public Bitmap getPathBitmap(Uri imageFilePath,int dw,int dh)throws FileNotFoundException{
-		//获取屏幕的宽和高
-		/**
-		 * 为了计算缩放的比例,我们需要获取整个图片的尺寸,而不是图片
-		 * BitmapFactory.Options类中有一个布尔型变量inJustDecodeBounds,将其设置为true
-		 * 这样,我们获取到的就是图片的尺寸,而不用加载图片了。
-		 * 当我们设置这个值的时候,我们接着就可以从BitmapFactory.Options的outWidth和outHeight中获取到值
-		 */
-		BitmapFactory.Options op = new BitmapFactory.Options();
-		op.inJustDecodeBounds = true;
-		//由于使用了MediaStore存储,这里根据URI获取输入流的形式
-		Bitmap pic = BitmapFactory.decodeStream(context.getContentResolver().openInputStream(imageFilePath),
-				null, op);
-
-		int wRatio = (int) Math.ceil(op.outWidth / (float) dw); //计算宽度比例
-		int hRatio = (int) Math.ceil(op.outHeight / (float) dh); //计算高度比例
-
-		/**
-		 * 接下来,我们就需要判断是否需要缩放以及到底对宽还是高进行缩放。
-		 * 如果高和宽不是全都超出了屏幕,那么无需缩放。
-		 * 如果高和宽都超出了屏幕大小,则如何选择缩放呢》
-		 * 这需要判断wRatio和hRatio的大小
-		 * 大的一个将被缩放,因为缩放大的时,小的应该自动进行同比率缩放。
-		 * 缩放使用的还是inSampleSize变量
-		 */
-		if (wRatio > 1 && hRatio > 1) {
-			if (wRatio > hRatio) {
-				op.inSampleSize = wRatio;
-			} else {
-				op.inSampleSize = hRatio;
-			}
-		}
-		op.inJustDecodeBounds = false; //注意这里,一定要设置为false,因为上面我们将其设置为true来获取图片尺寸了
-		pic = BitmapFactory.decodeStream(context.getContentResolver()
-				.openInputStream(imageFilePath), null, op);
-
-		return pic;
-	}
-
-	public String getfileinfo(String data){
-		String filename[]= data.split("/");
-		if (filename!=null) {
-			return filename[filename.length-2];
-		}
-		return null;
-	}
-
-	public void imgExcute(ImageView imageView,ImgCallBack icb, String... params){
-		LoadBitAsynk loadBitAsynk=new LoadBitAsynk(imageView,icb);
-		loadBitAsynk.execute(params);
-	}
-
-	public class LoadBitAsynk extends AsyncTask<String, Integer, Bitmap>{
-
-		ImageView imageView;
-		ImgCallBack icb;
-
-		LoadBitAsynk(ImageView imageView,ImgCallBack icb){
-			this.imageView=imageView;
-			this.icb=icb;
-		}
-
-		@Override
-		protected Bitmap doInBackground(String... params) {
-			Bitmap bitmap=null;
-			try {
-				if (params!=null) {
-					for (int i = 0; i < params.length; i++) {
-						bitmap=getPathBitmap(Uri.fromFile(new File(params[i])), 200, 200);
-					}
-				}
-			} catch (FileNotFoundException e) {
-				e.printStackTrace();
-			}
-
-			return bitmap;
-		}
-
-		@Override
-		protected void onPostExecute(Bitmap result) {
-			super.onPostExecute(result);
-			if (result!=null) {
+    Context context;
+
+    public Util(Context context) {
+        this.context = context;
+    }
+
+    /**
+     * 获取全部图片地址
+     *
+     * @return
+     */
+    public ArrayList<String> listAlldir() {
+        Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
+        Uri uri = intent.getData();
+        ArrayList<String> list = new ArrayList<String>();
+        String[] proj = {MediaStore.Images.Media.DATA};
+        Cursor cursor = context.getContentResolver().query(uri, proj, null, null, null);//managedQuery(uri, proj, null, null, null);
+        while (cursor.moveToNext()) {
+            String path = cursor.getString(0);
+            list.add(new File(path).getAbsolutePath());
+        }
+        return list;
+    }
+
+    public List<FileTraversal> LocalImgFileList() {
+        List<FileTraversal> data = new ArrayList<FileTraversal>();
+        String filename = "";
+        List<String> allimglist = listAlldir();
+        List<String> retulist = new ArrayList<String>();
+        if (allimglist != null) {
+            Set set = new TreeSet();
+            String[] str;
+            for (int i = 0; i < allimglist.size(); i++) {
+                retulist.add(getfileinfo(allimglist.get(i)));
+            }
+            for (int i = 0; i < retulist.size(); i++) {
+                set.add(retulist.get(i));
+            }
+            str = (String[]) set.toArray(new String[0]);
+            for (int i = 0; i < str.length; i++) {
+                filename = str[i];
+                FileTraversal ftl = new FileTraversal();
+                ftl.filename = filename;
+                data.add(ftl);
+            }
+
+            for (int i = 0; i < data.size(); i++) {
+                for (int j = allimglist.size() - 1; j >= 0; j--) {
+                    if (data.get(i).filename.equals(getfileinfo(allimglist.get(j)))) {
+                        data.get(i).filecontent.add(allimglist.get(j));
+                    }
+                }
+            }
+        }
+        return data;
+    }
+
+    //显示原生图片尺寸大小
+    public Bitmap getPathBitmap(Uri imageFilePath, int dw, int dh) throws FileNotFoundException {
+        //获取屏幕的宽和高
+        /**
+         * 为了计算缩放的比例,我们需要获取整个图片的尺寸,而不是图片
+         * BitmapFactory.Options类中有一个布尔型变量inJustDecodeBounds,将其设置为true
+         * 这样,我们获取到的就是图片的尺寸,而不用加载图片了。
+         * 当我们设置这个值的时候,我们接着就可以从BitmapFactory.Options的outWidth和outHeight中获取到值
+         */
+        BitmapFactory.Options op = new BitmapFactory.Options();
+        op.inJustDecodeBounds = true;
+        //由于使用了MediaStore存储,这里根据URI获取输入流的形式
+        Bitmap pic = BitmapFactory.decodeStream(context.getContentResolver().openInputStream(imageFilePath),
+                null, op);
+
+        int wRatio = (int) Math.ceil(op.outWidth / (float) dw); //计算宽度比例
+        int hRatio = (int) Math.ceil(op.outHeight / (float) dh); //计算高度比例
+
+        /**
+         * 接下来,我们就需要判断是否需要缩放以及到底对宽还是高进行缩放。
+         * 如果高和宽不是全都超出了屏幕,那么无需缩放。
+         * 如果高和宽都超出了屏幕大小,则如何选择缩放呢》
+         * 这需要判断wRatio和hRatio的大小
+         * 大的一个将被缩放,因为缩放大的时,小的应该自动进行同比率缩放。
+         * 缩放使用的还是inSampleSize变量
+         */
+        if (wRatio > 1 && hRatio > 1) {
+            if (wRatio > hRatio) {
+                op.inSampleSize = wRatio;
+            } else {
+                op.inSampleSize = hRatio;
+            }
+        }
+        op.inJustDecodeBounds = false; //注意这里,一定要设置为false,因为上面我们将其设置为true来获取图片尺寸了
+        pic = BitmapFactory.decodeStream(context.getContentResolver()
+                .openInputStream(imageFilePath), null, op);
+
+        return pic;
+    }
+
+    public String getfileinfo(String data) {
+        String filename[] = data.split("/");
+        if (filename != null) {
+            return filename[filename.length - 2];
+        }
+        return null;
+    }
+
+    public void imgExcute(ImageView imageView, ImgCallBack icb, String... params) {
+        LoadBitAsynk loadBitAsynk = new LoadBitAsynk(imageView, icb);
+        loadBitAsynk.execute(params);
+    }
+
+    public class LoadBitAsynk extends AsyncTask<String, Integer, Bitmap> {
+
+        ImageView imageView;
+        ImgCallBack icb;
+
+        LoadBitAsynk(ImageView imageView, ImgCallBack icb) {
+            this.imageView = imageView;
+            this.icb = icb;
+        }
+
+        @Override
+        protected Bitmap doInBackground(String... params) {
+            Bitmap bitmap = null;
+            try {
+                if (params != null) {
+                    for (int i = 0; i < params.length; i++) {
+                        bitmap = getPathBitmap(Uri.fromFile(new File(params[i])), 200, 200);
+                    }
+                }
+            } catch (FileNotFoundException e) {
+                e.printStackTrace();
+            }
+
+            return bitmap;
+        }
+
+        @Override
+        protected void onPostExecute(Bitmap result) {
+            super.onPostExecute(result);
+            if (result != null) {
 //				imageView.setImageBitmap(result);
-				icb.resultImgCall(imageView, result);
-			}
-		}
+                icb.resultImgCall(imageView, result);
+            }
+        }
 
 
-	}
+    }
 
 }

+ 9 - 1
app_core/common/src/main/java/com/core/widget/view/Activity/SearchLocationActivity.java

@@ -6,6 +6,7 @@ import android.view.View;
 import android.widget.AdapterView;
 import android.widget.EditText;
 import android.widget.RelativeLayout;
+import android.widget.TextView;
 
 import com.baidu.mapapi.map.MapView;
 import com.baidu.mapapi.model.LatLng;
@@ -35,6 +36,7 @@ public class SearchLocationActivity extends OABaseActivity implements ISearchVie
     private SearchPresenter presenter;
     private SearchLocationAdapter mAdapter;
     private EmptyLayout mEmptyLayout;
+    private TextView messageTv;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -56,6 +58,7 @@ public class SearchLocationActivity extends OABaseActivity implements ISearchVie
         mEmptyLayout.setShowEmptyButton(false);
         mEmptyLayout.setShowErrorButton(false);
         mEmptyLayout.setEmptyViewRes(R.layout.empty_locayion);
+        messageTv = (TextView) mEmptyLayout.getEmptyView().findViewById(R.id.messageTv);
 
         presenter = new SearchPresenter(this);
         presenter.init(getIntent());
@@ -89,6 +92,9 @@ public class SearchLocationActivity extends OABaseActivity implements ISearchVie
     public void showPoiList(List<SearchLocationModel> models, String distanceTag) {
         if (ListUtils.isEmpty(models)) {
             mEmptyLayout.showEmpty();
+           if(messageTv!=null&& presenter.isHineOutSize()){
+               messageTv.setText("当前没有找到符合打卡的位置,请移步至打卡位置进行打卡!!");
+           }
         }
         if (mAdapter == null) {
             mAdapter = new SearchLocationAdapter(ct, models, distanceTag);
@@ -105,6 +111,8 @@ public class SearchLocationActivity extends OABaseActivity implements ISearchVie
     }
 
     public void showNotNetWork() {
-        ToastUtil.showToast(this,R.string.networks_out);
+        ToastUtil.showToast(this, R.string.networks_out);
     }
+
+
 }

+ 3 - 1
app_core/common/src/main/java/com/core/widget/view/HorizontalStepsView.java

@@ -74,7 +74,9 @@ public class HorizontalStepsView extends View {
         if (titles == null || progress > titles.length)
             new Exception("titles can not be null  or progress can not out of titles.length");
         this.progress = progress;
-        this.titles = titles;
+        if (titles.length>0){
+            this.titles = titles;
+        }
         invalidate();
 
     }

+ 11 - 2
app_core/common/src/main/java/com/core/widget/view/imp/SearchPresenter.java

@@ -179,16 +179,22 @@ public class SearchPresenter {
         BaiduMapUtil.getInstence().getNearInfo(radius, pageNum, location, listener);
     }
 
+
     /**
      * 获取完数据后进入显示,先进行排序
      *
      * @param chche
      */
     private void showData(List<SearchLocationModel> chche) {
+        List<SearchLocationModel> showModels = new ArrayList<>();
         if (!ListUtils.isEmpty(chche)) {
             for (int i = 0; i < chche.size(); i++) {
                 float distance = Float.valueOf(BaiduMapUtil.getInstence().getDistance(chche.get(i).getPoiInfo().location, param.getContrastLatLng()));
+
                 chche.get(i).setDistance(distance);
+                if (!param.isHineOutSize() || param.getShowRange() > distance) {
+                    showModels.add(chche.get(i));
+                }
             }
             Comparator<SearchLocationModel> comparator = new Comparator<SearchLocationModel>() {
                 public int compare(SearchLocationModel s1, SearchLocationModel s2) {
@@ -196,8 +202,11 @@ public class SearchPresenter {
                     return s1.getDistance() > s2.getDistance() ? 1 : -1;
                 }
             };
-            Collections.sort(chche, comparator);
+            Collections.sort(showModels, comparator);
         }
-        iSearchView.showPoiList(chche, param.getDistanceTag());
+        iSearchView.showPoiList(showModels, param.getDistanceTag());
+    }
+    public boolean isHineOutSize(){
+        return param.isHineOutSize();
     }
 }

+ 66 - 41
app_core/common/src/main/java/com/core/widget/view/model/SearchPoiParam.java

@@ -16,8 +16,8 @@ import com.core.app.MyApplication;
  * create by Bitliker 2017/2/23
  */
 public class SearchPoiParam implements Parcelable {
-    public static final int DEFAULT_RESULTCODE=0x51;
-    public static final String  DEFAULT_RESULTKEY="resultKey";
+    public static final int DEFAULT_RESULTCODE = 0x51;
+    public static final String DEFAULT_RESULTKEY = "resultKey";
 
     private boolean isShowSearchEdit;//是否显示搜索框
     private int resultCode;//返回码
@@ -31,6 +31,8 @@ public class SearchPoiParam implements Parcelable {
     private int radius;//搜索附近时候选择范围大小
     private String keyWork;//搜索名字位置时候位置名称
 
+    private boolean hineOutSize;
+    private float showRange;
 
     public SearchPoiParam() {
         isShowSearchEdit = true;
@@ -41,6 +43,8 @@ public class SearchPoiParam implements Parcelable {
         distanceTag = "m";
         title = "地址微调";
         radius = 200;
+        hineOutSize = false;
+        showRange = 1000;
         contrastLatLng = MyApplication.getInstance().getBdLocationHelper().getLocation();
     }
 
@@ -57,52 +61,25 @@ public class SearchPoiParam implements Parcelable {
         this.keyWork = keyWork;
     }
 
-    protected SearchPoiParam(Parcel in) {
-        isShowSearchEdit = in.readByte() != 0;
-        resultCode = in.readInt();
-        resultKey = in.readString();
-        riceTimes = in.readInt();
-        distanceTag = in.readString();
-        contrastLatLng = in.readParcelable(LatLng.class.getClassLoader());
-        title = in.readString();
-        type = in.readInt();
-        radius = in.readInt();
-        keyWork = in.readString();
+    public boolean isShowSearchEdit() {
+        return isShowSearchEdit;
     }
 
-    @Override
-    public void writeToParcel(Parcel dest, int flags) {
-        dest.writeByte((byte) (isShowSearchEdit ? 1 : 0));
-        dest.writeInt(resultCode);
-        dest.writeString(resultKey);
-        dest.writeInt(riceTimes);
-        dest.writeString(distanceTag);
-        dest.writeParcelable(contrastLatLng, flags);
-        dest.writeString(title);
-        dest.writeInt(type);
-        dest.writeInt(radius);
-        dest.writeString(keyWork);
+    public boolean isHineOutSize() {
+        return hineOutSize;
     }
 
-    @Override
-    public int describeContents() {
-        return 0;
+    public void setHineOutSize(boolean hineOutSize) {
+        this.hineOutSize = hineOutSize;
     }
 
-    public static final Creator<SearchPoiParam> CREATOR = new Creator<SearchPoiParam>() {
-        @Override
-        public SearchPoiParam createFromParcel(Parcel in) {
-            return new SearchPoiParam(in);
-        }
-
-        @Override
-        public SearchPoiParam[] newArray(int size) {
-            return new SearchPoiParam[size];
-        }
-    };
+    public float getShowRange() {
+        return showRange;
+    }
 
-    public boolean isShowSearchEdit() {
-        return isShowSearchEdit;
+    public void setShowRange(float showRange) {
+        this.hineOutSize = true;
+        this.showRange = showRange;
     }
 
     public void setShowSearchEdit(boolean showSearchEdit) {
@@ -180,4 +157,52 @@ public class SearchPoiParam implements Parcelable {
     public void setKeyWork(String keyWork) {
         this.keyWork = keyWork;
     }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeByte(this.isShowSearchEdit ? (byte) 1 : (byte) 0);
+        dest.writeInt(this.resultCode);
+        dest.writeString(this.resultKey);
+        dest.writeInt(this.riceTimes);
+        dest.writeString(this.distanceTag);
+        dest.writeParcelable(this.contrastLatLng, flags);
+        dest.writeString(this.title);
+        dest.writeInt(this.type);
+        dest.writeInt(this.radius);
+        dest.writeString(this.keyWork);
+        dest.writeByte(this.hineOutSize ? (byte) 1 : (byte) 0);
+        dest.writeFloat(this.showRange);
+    }
+
+    protected SearchPoiParam(Parcel in) {
+        this.isShowSearchEdit = in.readByte() != 0;
+        this.resultCode = in.readInt();
+        this.resultKey = in.readString();
+        this.riceTimes = in.readInt();
+        this.distanceTag = in.readString();
+        this.contrastLatLng = in.readParcelable(LatLng.class.getClassLoader());
+        this.title = in.readString();
+        this.type = in.readInt();
+        this.radius = in.readInt();
+        this.keyWork = in.readString();
+        this.hineOutSize = in.readByte() != 0;
+        this.showRange = in.readFloat();
+    }
+
+    public static final Creator<SearchPoiParam> CREATOR = new Creator<SearchPoiParam>() {
+        @Override
+        public SearchPoiParam createFromParcel(Parcel source) {
+            return new SearchPoiParam(source);
+        }
+
+        @Override
+        public SearchPoiParam[] newArray(int size) {
+            return new SearchPoiParam[size];
+        }
+    };
 }

+ 1 - 0
app_core/common/src/main/res/layout/empty_locayion.xml

@@ -12,6 +12,7 @@
         android:paddingBottom="10dp"/>
 
     <TextView
+        android:id="@+id/messageTv"
         android:layout_marginTop="10dp"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"

+ 18 - 19
app_modular/appcontact/src/main/java/com/uas/appcontact/ui/activity/ContactsActivity.java

@@ -106,7 +106,7 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
     private boolean isSingleSelect = true;//true 单选  false 多选
     private String searchKey;
     private int allSelect = 0;
-    
+
     private LinearLayout include_tag;
 
 
@@ -139,16 +139,16 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
         mlist = (PullToRefreshListView) findViewById(R.id.mList);
         all_sure_cb = (CheckBox) findViewById(R.id.all_sure_cb);
         mumber_tv = (TextView) findViewById(R.id.mumber_tv);
-        include_tag= (LinearLayout) findViewById(R.id.include_tag);
-        select_rl= (RelativeLayout) findViewById(R.id.select_rl);
+        include_tag = (LinearLayout) findViewById(R.id.include_tag);
+        select_rl = (RelativeLayout) findViewById(R.id.select_rl);
         voiceSearchView = (VoiceSearchView) findViewById(R.id.voiceSearchView);
         if (getIntent() != null) {
             type = getIntent().getIntExtra("type", 0);
             String title = getIntent().getStringExtra("title");
             isSingleSelect = getIntent().getBooleanExtra("isSingleSelect", true);
-            if(isSingleSelect){
+            if (isSingleSelect) {
                 select_rl.setVisibility(View.GONE);
-            }else{
+            } else {
                 select_rl.setVisibility(View.VISIBLE);
             }
             if (!StringUtil.isEmpty(title)) {
@@ -450,7 +450,6 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
 
             }
         });
-
     }
 
     /**
@@ -464,9 +463,9 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
                 ThreadPool.getThreadPool().addTask(new Runnable() {
                     @Override
                     public void run() {
-                        List<ContactsModel> contacts=new ArrayList<>();
-                        for (ContactsModel model:lists){
-                            if ("0".equals(model.getImid())||StringUtil.isEmpty(model.getImid())){
+                        List<ContactsModel> contacts = new ArrayList<>();
+                        for (ContactsModel model : lists) {
+                            if ("0".equals(model.getImid()) || StringUtil.isEmpty(model.getImid())) {
                                 contacts.add(model);
                             }
                         }
@@ -475,7 +474,7 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
                 });
                 boolean falg = !ListUtils.isEmpty(lists) && !isHasNet;
                 if (falg) {
-                    LogUtil.d("Test","取缓存数据:"+falg);
+                    LogUtil.d("Test", "取缓存数据:" + falg);
                     getStateByPhones(lists);
                     OAHttpHelper.getInstance().post(new Runnable() {
                         @Override
@@ -489,7 +488,7 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
                                 mlist.onRefreshComplete();
                                 voiceSearchView.getSearch_edit().setHint(lists.size() + "位联系人");
                                 dimssLoading();
-                              
+
                             }
                         }
                     });
@@ -566,7 +565,7 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
                     try {
                         hanlderAppQueryuserInThread(message);
                     } catch (Exception e) {
-                      
+
                     }
                 }
             }
@@ -896,9 +895,9 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
                             "},");
                 }
             }
-         
+
             HttpClient httpClient = new HttpClient.Builder().url(Constants.IM_BASE_URL)
-                    .add("comParam","param")
+                    .add("comParam", "param")
                     .isDebug(true).build(true);
             httpClient.Api().send(new HttpClient.Builder()
                     .url("/user/appMobileContact")
@@ -912,11 +911,11 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
 
                 @Override
                 public void onResponse(Object o) {
-                    LogUtil.prinlnLongMsg("HttpLogs",o.toString());
-                    LogUtil.d("HttpLogs","result:"+o.toString());
-                       if(JSONUtil.validate(o.toString())){
-                       
-                       }
+                    LogUtil.prinlnLongMsg("HttpLogs", o.toString());
+                    LogUtil.d("HttpLogs", "result:" + o.toString());
+                    if (JSONUtil.validate(o.toString())) {
+
+                    }
                 }
             }));
         }

+ 2 - 3
app_modular/appme/src/main/java/com/uas/appme/other/activity/BasicInfoActivity.java

@@ -247,7 +247,7 @@ public class BasicInfoActivity extends BaseActivity implements NewFriendListener
         }
 
         int itemId = item.getItemId();
-        if(itemId==R.id.basic_info_more){
+        if (itemId == R.id.basic_info_more) {
             if (mFriend.getStatus() == Friend.STATUS_BLACKLIST) {// 在黑名单中,显示“设置备注名”、“移除黑名单”,"取消关注",“彻底删除”
                 mAddBlackTv.setVisibility(View.GONE);
                 mRemoveBlackTv.setVisibility(View.VISIBLE);
@@ -328,8 +328,7 @@ public class BasicInfoActivity extends BaseActivity implements NewFriendListener
                     mUser = result.getData();
                     // 如果本地的好友状态不正确,那么就更新本地好友状态
                     AttentionUser attentionUser = mUser.getFriends();// 服务器的状态
-                    boolean changed = FriendHelper.updateFriendRelationship(mLoginUserId, mUser.getUserId(),
-                            attentionUser);
+                    boolean changed = FriendHelper.updateFriendRelationship(mLoginUserId, mUser.getUserId(), attentionUser);
                     if (changed) {
                         updateAllCardcastUi();
                     }

+ 1 - 0
app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/presenter/WorkPresenter.java

@@ -318,6 +318,7 @@ public class WorkPresenter implements OnHttpResultListener, IWorkPresenter {
         poiParam.setType(1);
         poiParam.setTitle(MyApplication.getInstance().getResources().getString(R.string.unoffice));
         poiParam.setRadius(300);
+        poiParam.setShowRange(companyLocation.getValidrange());
         poiParam.setContrastLatLng(new LatLng(companyLocation.getLocation().longitude, companyLocation.getLocation().latitude));
         poiParam.setResultCode(ADDRESS_CHANGE);
         poiParam.setDistanceTag(MyApplication.getInstance().getResources().getString(R.string.rice));