FANGLH 8 years ago
parent
commit
9f6416a9a2
26 changed files with 287 additions and 211 deletions
  1. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/MyApplication.java
  2. 1 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/MainActivity.java
  3. 34 12
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/account/LoginActivity.java
  4. 4 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/CompanyContactsActivity.java
  5. 2 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/AddBusinessActivity.java
  6. 0 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/BusinessStateActivity.java
  7. 30 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/oa/AddBusinessAdapter.java
  8. 7 6
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/db/DBManager.java
  9. 10 7
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/entity/EmployeesEntity.java
  10. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/oa/OAConfig.java
  11. 18 82
      WeiChat/src/main/java/com/xzjmyk/pm/activity/util/PermissionUtil.java
  12. 73 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/util/stream/PermissionHelper.java
  13. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/video/VideoActivity.java
  14. BIN
      WeiChat/src/main/jniLibs/arm64-v8a/libmsc.so
  15. BIN
      WeiChat/src/main/jniLibs/armeabi-v7a/libmsc.so
  16. BIN
      WeiChat/src/main/jniLibs/armeabi/libmsc.so
  17. BIN
      WeiChat/src/main/jniLibs/mips/libmsc.so
  18. BIN
      WeiChat/src/main/jniLibs/mips64/libmsc.so
  19. BIN
      WeiChat/src/main/jniLibs/x86/libmsc.so
  20. BIN
      WeiChat/src/main/jniLibs/x86_64/libmsc.so
  21. 96 86
      WeiChat/src/main/res/layout/fragment_attendances.xml
  22. 1 0
      WeiChat/src/main/res/values-en/strings.xml
  23. 5 1
      WeiChat/src/main/res/values-zh-rCN/strings.xml
  24. 1 0
      WeiChat/src/main/res/values-zh-rTW/strings.xml
  25. 1 0
      WeiChat/src/main/res/values/strings.xml
  26. 1 1
      gradle/wrapper/gradle-wrapper.properties

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/MyApplication.java

@@ -329,7 +329,7 @@ public class MyApplication extends Application {
         ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this).defaultDisplayImageOptions(mNormalImageOptions)
                 // .denyCacheImageMultipleSizesInMemory()
                 .discCache(new TotalSizeLimitedDiscCache(new File(mPicturesDir), 50 * 1024 * 1024))
-                        // 最多缓存50M的图片
+                // 最多缓存50M的图片
                 .discCacheFileNameGenerator(new Md5FileNameGenerator()).memoryCache(memoryCache).tasksProcessingOrder(QueueProcessingType.LIFO)
                 .threadPriority(Thread.NORM_PRIORITY - 2)
                 .threadPoolSize(4)

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

@@ -780,8 +780,7 @@ public class MainActivity extends BaseActivity implements NetWorkObservable.NetW
         LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
         if (platform) {
             headers.put("Cookie", "JSESSIONID=" + ApiConfig.getInstance(ApiUtils.getApiModel()).getmApiBase().getCookie());
-        }
-        else {
+        } else {
             headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
         }
         ViewUtil.httpSendRequest(this, url, param, mUserCheckHander, headers, LOG_SEND_REQUEST, null, null, "post");

+ 34 - 12
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/account/LoginActivity.java

@@ -1,9 +1,12 @@
 package com.xzjmyk.pm.activity.ui.account;
 
+import android.Manifest;
 import android.app.ProgressDialog;
 import android.content.DialogInterface;
 import android.content.Intent;
+import android.content.pm.PackageManager;
 import android.os.Bundle;
+import android.support.annotation.NonNull;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.View;
@@ -26,6 +29,7 @@ import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
 import com.xzjmyk.pm.activity.ui.me.TimeStatisticsActivity;
 import com.xzjmyk.pm.activity.util.DeviceInfoUtil;
 import com.xzjmyk.pm.activity.util.Md5Util;
+import com.xzjmyk.pm.activity.util.PermissionUtil;
 import com.xzjmyk.pm.activity.util.PreferenceUtils;
 import com.xzjmyk.pm.activity.util.ProgressDialogUtil;
 import com.xzjmyk.pm.activity.util.TimeUtils;
@@ -38,6 +42,7 @@ import java.util.HashMap;
 
 import de.hdodenhof.circleimageview.CircleImageView;
 
+
 /**
  * 登陆界面
  *
@@ -53,6 +58,7 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener
 
     private TextView tv_register;
     private TextView tv_findPwd;
+    private String[] permissions = {Manifest.permission.READ_PHONE_STATE};
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -73,25 +79,41 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener
     @Override
     protected void onResume() {
         super.onResume();
+        if (PermissionUtil.lacksPermissions(this, permissions)) {
+            PermissionUtil.requestPermission(this, PermissionUtil.DEFAULT_REQUEST, permissions);
+        }
         if (!MyApplication.getInstance().getBdLocationHelper().isLocationUpdate()) {
             MyApplication.getInstance().getBdLocationHelper().requestLocation();
         }
     }
 
+    @Override
+    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
+        if (requestCode == PermissionUtil.DEFAULT_REQUEST) {
+            if (grantResults.length != 1 || grantResults[0] != PackageManager.PERMISSION_GRANTED) {
+                //TODO 没有获取到权限
+                LogUtil.i("没有获取到权限");
+            } else {
+                LogUtil.i("已经用户赋予权限获取到权限");
+            }
+        }
+        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+    }
+
     private void initView() {
         mPhoneNumberEdit = (EditText) findViewById(R.id.phone_numer_edit);
         mPasswordEdit = (EditText) findViewById(R.id.password_edit);
         mHeader = (CircleImageView) findViewById(R.id.iv_head);
-        tv_findPwd= (TextView) findViewById(R.id.tv_findPwd);
-        tv_register= (TextView) findViewById(R.id.tv_register);
-        if (CommonUtil.getSharedPreferences(this,"user_phone") != null &&CommonUtil.getSharedPreferences(this, "user_phone").length() > 0) {
+        tv_findPwd = (TextView) findViewById(R.id.tv_findPwd);
+        tv_register = (TextView) findViewById(R.id.tv_register);
+        if (CommonUtil.getSharedPreferences(this, "user_phone") != null && CommonUtil.getSharedPreferences(this, "user_phone").length() > 0) {
             mPhoneNumberEdit.setText(CommonUtil.getSharedPreferences(this, "user_phone"));
-      
-        
+
+
         }
         if (PreferenceUtils.getString(this, PASS_WORDS) != null && PreferenceUtils.getString(this, PASS_WORDS).length() > 0) {
             mPasswordEdit.setText(PreferenceUtils.getString(this, PASS_WORDS));
-           
+
         }
         //登陆账号
         findViewById(R.id.login_btn).setOnClickListener(this);
@@ -109,13 +131,13 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener
                 login();
                 break;
             case R.id.tv_register:
-                ViewUtil.webLinks(mContext, 
-                        "https://account.ubtob.com/sso/register", 
+                ViewUtil.webLinks(mContext,
+                        "https://account.ubtob.com/sso/register",
                         getString(R.string.login_register));
                 break;
             case R.id.tv_findPwd:
-                ViewUtil.webLinks(mContext, 
-                        "https://account.ubtob.com/user/pwd?appId=home&returnURL=http%3A%2F%2Fwww.ubtob.com%2F", 
+                ViewUtil.webLinks(mContext,
+                        "https://account.ubtob.com/user/pwd?appId=home&returnURL=http%3A%2F%2Fwww.ubtob.com%2F",
                         getString(R.string.login_getpwd));
                 break;
         }
@@ -222,8 +244,8 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener
         if (TextUtils.isEmpty(password)) {
             return;
         }
-        if (mContext==null){
-            mContext=this;
+        if (mContext == null) {
+            mContext = this;
             return;
         }
         ViewUtil.LoginTask(phone, password, mContext);

+ 4 - 4
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/CompanyContactsActivity.java

@@ -379,12 +379,12 @@ public class CompanyContactsActivity extends BaseActivity implements RecognizerD
                     Map<String, Object> employee = new HashMap<>();
                     employee.put("em_name", object.getEM_NAME());
                     employee.put("em_mobile",
-                            object.getEM_MOBILE() == null ? "未填写" : object.getEM_MOBILE());
-                    employee.put("em_email", object.getEM_EMAIL() == null ? "未填写" : object.getEM_EMAIL());
+                            object.getEM_MOBILE() == null ?MyApplication.getInstance().getString(R.string.common_noinput)  : object.getEM_MOBILE());
+                    employee.put("em_email", object.getEM_EMAIL() == null ? MyApplication.getInstance().getString(R.string.common_noinput) : object.getEM_EMAIL());
                     employee.put("em_position",
-                            object.getEM_POSITION() == null ? "未填写" : object.getEM_POSITION());
+                            object.getEM_POSITION() == null ? MyApplication.getInstance().getString(R.string.common_noinput) : object.getEM_POSITION());
                     employee.put("em_defaultorname",
-                            object.getEM_DEFAULTORNAME() == null ? "未填写" : object.getEM_DEFAULTORNAME());
+                            object.getEM_DEFAULTORNAME() == null ?MyApplication.getInstance().getString(R.string.common_noinput)  : object.getEM_DEFAULTORNAME());
                 /*showDialogEmployee(employee);*/
                     break;
                 case Constants.APP_SOCKETIMEOUTEXCEPTION:

+ 2 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/AddBusinessActivity.java

@@ -97,13 +97,13 @@ public class AddBusinessActivity extends OABaseActivity implements View.OnClickL
             business_stage_tv.setText(OACheckUtil.getString(intent.getStringExtra("businessStage")));//商机阶段
             business_Library_tv.setText(OACheckUtil.getString(intent.getStringExtra("businessLibrary")));//商机库
             List<EmployeesModel> contacts = intent.getParcelableArrayListExtra("contact");
-            adapter = new AddBusinessAdapter(contacts);
+            adapter = new AddBusinessAdapter(this, contacts);
             company_tv.setFocusable(false);
             company_tv.setOnClickListener(null);
         } else {
             List<EmployeesModel> contacts = new ArrayList<>();
             contacts.add(new EmployeesModel());
-            adapter = new AddBusinessAdapter(contacts);
+            adapter = new AddBusinessAdapter(this, contacts);
         }
         contact_lv.setAdapter(adapter);
     }

+ 0 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/BusinessStateActivity.java

@@ -319,8 +319,6 @@ public class BusinessStateActivity extends BaseActivity implements View.OnClickL
 
         @Override
         public View getView(final int position, View convertView, ViewGroup parent) {
-            if (CommonUtil.isReleaseVersion())
-                return getOldView(position, convertView, parent);
             return getNewView(position, convertView, parent);
         }
 

+ 30 - 3
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/oa/AddBusinessAdapter.java

@@ -1,6 +1,10 @@
 package com.xzjmyk.pm.activity.ui.erp.adapter.oa;
 
+import android.app.Activity;
+import android.content.DialogInterface;
+import android.support.v7.app.AlertDialog;
 import android.text.Editable;
+import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -24,9 +28,11 @@ public class AddBusinessAdapter extends BaseAdapter {
 
 
     private List<EmployeesModel> contacts;
+    private Activity activity;
 
-    public AddBusinessAdapter(List<EmployeesModel> contacts) {
+    public AddBusinessAdapter(Activity activity, List<EmployeesModel> contacts) {
         this.contacts = contacts;
+        this.activity = activity;
     }
 
     public List<EmployeesModel> getContacts() {
@@ -81,8 +87,27 @@ public class AddBusinessAdapter extends BaseAdapter {
         holder.delete_tv.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                contacts.remove(contact);
-                notifyDataSetChanged();
+                if (!TextUtils.isEmpty(holder.name_et.getText()) || !TextUtils.isEmpty(holder.phone_et.getText())) {
+                    AlertDialog.Builder builder = new AlertDialog.Builder(activity);
+                    builder.setTitle(R.string.prompt_title).setMessage(R.string.sure_delete_content).setPositiveButton(R.string.sure, new DialogInterface.OnClickListener() {
+                        @Override
+                        public void onClick(DialogInterface dialogInterface, int i) {
+                            try {
+                                contacts.remove(contact);
+                                notifyDataSetChanged();
+                            } catch (Exception e) {
+                            }
+                        }
+                    }).setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+                        @Override
+                        public void onClick(DialogInterface dialogInterface, int i) {
+
+                        }
+                    }).show();
+                } else {
+                    contacts.remove(contact);
+                    notifyDataSetChanged();
+                }
             }
         });
         holder.delete_tv.setVisibility(position == 0 ? View.GONE : View.VISIBLE);
@@ -96,4 +121,6 @@ public class AddBusinessAdapter extends BaseAdapter {
         TextView delete_tv;
     }
 
+//    public interface
+
 }

+ 7 - 6
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/db/DBManager.java

@@ -7,6 +7,7 @@ import android.database.sqlite.SQLiteStatement;
 import android.util.Log;
 
 import com.xzjmyk.pm.activity.MyApplication;
+import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.bean.PersonalSubscriptionBean;
 import com.xzjmyk.pm.activity.bean.SubscriptionNumber;
 import com.xzjmyk.pm.activity.db.DatabaseManager;
@@ -185,23 +186,23 @@ public class DBManager {
         SQLiteStatement sta = db.compileStatement(sql);
         db.beginTransaction();
         String whichsys=CommonUtil.getMaster();
-        if (StringUtils.isEmpty(whichsys))whichsys="未填写";
+        if (StringUtils.isEmpty(whichsys))whichsys=MyApplication.getInstance().getString(R.string.common_noinput);
         for (int i = 0; i < employeesEntities.size(); i++) {
             EmployeesEntity entity = employeesEntities.get(i);
             sta.bindString(1, String.valueOf(entity.getEM_ID()));
             sta.bindString(2, entity.getEM_CODE() == null ? "null" : entity.getEM_CODE());
             sta.bindString(3, entity.getEM_NAME());
             sta.bindString(4, entity.getEM_POSITION());
-            sta.bindString(5, entity.getEM_DEFAULTORNAME() == null ? "未填写" : entity.getEM_DEFAULTORNAME());
+            sta.bindString(5, entity.getEM_DEFAULTORNAME() == null ? MyApplication.getInstance().getString(R.string.common_noinput): entity.getEM_DEFAULTORNAME());
             sta.bindString(6, entity.getEM_DEPART());
-            sta.bindString(7, entity.getEM_MOBILE() == null ? "未填写" : entity.getEM_MOBILE());
+            sta.bindString(7, entity.getEM_MOBILE() == null ? MyApplication.getInstance().getString(R.string.common_noinput) : entity.getEM_MOBILE());
             sta.bindString(8, String.valueOf(entity.getEM_UU()));
             sta.bindString(9, entity.getCOMPANY());
             sta.bindString(10, StringUtils.isEmpty(entity.getWHICHSYS())?whichsys:entity.getWHICHSYS());
             sta.bindLong(11, entity.getEm_defaultorid());
             sta.bindString(12, entity.getFLAG());
             sta.bindString(13, String.valueOf(entity.getEm_IMID()));
-            sta.bindString(14, StringUtils.isEmpty(entity.getEM_EMAIL()) ? "未填写" : entity.getEM_EMAIL());
+            sta.bindString(14, StringUtils.isEmpty(entity.getEM_EMAIL()) ?MyApplication.getInstance().getString(R.string.common_noinput) : entity.getEM_EMAIL());
             sta.executeInsert();
         }
         db.setTransactionSuccessful();
@@ -225,9 +226,9 @@ public class DBManager {
             sta.bindString(2, entity.getEM_CODE());
             sta.bindString(3, entity.getEM_NAME());
             sta.bindString(4, entity.getEM_POSITION());
-            sta.bindString(5, entity.getEM_DEFAULTORNAME() == null ? "未填写" : entity.getEM_DEFAULTORNAME());
+            sta.bindString(5, entity.getEM_DEFAULTORNAME() == null ? MyApplication.getInstance().getString(R.string.common_noinput) : entity.getEM_DEFAULTORNAME());
             sta.bindString(6, entity.getEM_DEPART());
-            sta.bindString(7, entity.getEM_MOBILE() == null ? "未填写" : entity.getEM_MOBILE());
+            sta.bindString(7, entity.getEM_MOBILE() == null ?MyApplication.getInstance().getString(R.string.common_noinput) : entity.getEM_MOBILE());
             sta.bindString(8, String.valueOf(entity.getEM_UU()));
             sta.bindString(9, entity.getCOMPANY());
             sta.bindString(10, entity.getWHICHSYS());

+ 10 - 7
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/entity/EmployeesEntity.java

@@ -3,18 +3,21 @@ package com.xzjmyk.pm.activity.ui.erp.entity;
 import android.os.Parcel;
 import android.os.Parcelable;
 
+import com.xzjmyk.pm.activity.MyApplication;
+import com.xzjmyk.pm.activity.R;
+
 public class EmployeesEntity implements Parcelable {
 
     private int EM_ID = 0;
     private String EM_CODE = "";
-    private String EM_NAME = "未填写";
-    private String EM_POSITION = "未填写";
-    private String EM_DEFAULTORNAME = "未填写";
-    private String EM_DEPART = "未填写";
-    private String EM_MOBILE = "未填写";
-    private String EM_EMAIL = "未填写";
+    private String EM_NAME = MyApplication.getInstance().getString(R.string.common_noinput) ;
+    private String EM_POSITION = MyApplication.getInstance().getString(R.string.common_noinput) ;
+    private String EM_DEFAULTORNAME = MyApplication.getInstance().getString(R.string.common_noinput) ;
+    private String EM_DEPART = MyApplication.getInstance().getString(R.string.common_noinput) ;
+    private String EM_MOBILE = MyApplication.getInstance().getString(R.string.common_noinput) ;
+    private String EM_EMAIL =MyApplication.getInstance().getString(R.string.common_noinput) ;
     private String EM_UU = "";
-    private String COMPANY = "未填写";
+    private String COMPANY = MyApplication.getInstance().getString(R.string.common_noinput) ;
     private String WHICHSYS = "";
     private int Em_defaultorid = 0;
     private String FLAG = "";

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/oa/OAConfig.java

@@ -26,6 +26,6 @@ public class OAConfig {
 
     /*是否显示Crm2.0功能*/
     public static boolean canShowCrm2_0() {
-        return false;
+        return true;
     }
 }

+ 18 - 82
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/PermissionUtil.java

@@ -2,14 +2,10 @@ package com.xzjmyk.pm.activity.util;
 
 import android.app.Activity;
 import android.content.Context;
-import android.content.DialogInterface;
 import android.content.pm.PackageManager;
 import android.os.Build;
 import android.support.v4.app.ActivityCompat;
 import android.support.v4.content.ContextCompat;
-import android.support.v7.app.AlertDialog;
-
-import java.lang.reflect.Method;
 
 /**
  * android6.0以上权限控制
@@ -20,94 +16,34 @@ import java.lang.reflect.Method;
  * 4.进行权限之后动作
  */
 public class PermissionUtil {
-    private Activity activity;
-    public  static final int DEFAULT_REQUEST=0x31;
-    public PermissionUtil(Activity activity) {
-        this.activity = activity;
-    }
+    public static final int DEFAULT_REQUEST = 0x31;
 
-    /**
-     * 判断是否拥有指定权限
-     *
-     * @param permissions 要检查的权限
-     * @return 若有一个权限没有,就返回false,全部权限都拥有,返回true
-     */
-    public boolean hasPermissionGranted(String[] permissions) {
-        for (String permission : permissions) {
-            if (ContextCompat.checkSelfPermission(activity, permission) == PackageManager.PERMISSION_DENIED) {
-                return false;
-            }
-        }
-        return true;
-    }
 
-    /**
-     * 判断是否向用户显示权限请求的依据(向用户解释为什么要申请该权限)
-     *
-     * @param permissions 要申请的权限
-     * @return 若有一个权限应该显示依据,返回true,若全部权限都不应该显示依据,返回false
-     */
-    private boolean shouldShowRequestPermissionRationale(String[] permissions) {
-        for (String permission : permissions) {
-            if (ActivityCompat.shouldShowRequestPermissionRationale(activity, permission)) {
-                return true;
+    // 判断权限集合
+    public static boolean lacksPermissions(Context context, String... permissions) {
+        if (Build.VERSION.SDK_INT >= 23) {
+            for (String permission : permissions) {
+                if (lacksPermission(context,permission)) {
+                    return true;
+                }
             }
+        } else {
+            PackageManager pm = context.getPackageManager();
+            for (String permission : permissions)
+                if (pm.checkPermission(permission, context.getPackageName()) == PackageManager.PERMISSION_GRANTED)
+                    return true;
         }
         return false;
     }
 
-    /**
-     * 请求所需所有的权限
-     *
-     * @param permissions 要请求的权限  对应onRequestPermissionsResult中的第二个参数permissions
-     * @param requestCode 权限请求码  对应onRequestPermissionsResult中的第一个参数requestCode
-     */
-    public void requestRequiredPermissions(final String[] permissions,  final int requestCode) {
-        if (shouldShowRequestPermissionRationale(permissions)) {
-            new AlertDialog.Builder(activity)
-                    .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
-                        @Override
-                        public void onClick(DialogInterface dialog, int which) {
-                            ActivityCompat.requestPermissions(activity, permissions, requestCode);
-                        }
-                    })
-                    .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
-                        @Override
-                        public void onClick(DialogInterface dialog, int which) {
-                            activity.finish();
-                        }
-                    })
-                    .show();
-        } else {
-            ActivityCompat.requestPermissions(activity, permissions, requestCode);
-        }
+    // 判断是否缺少权限
+    private static boolean lacksPermission(Context context,String permission) {
+        return ContextCompat.checkSelfPermission(context, permission) ==
+                PackageManager.PERMISSION_DENIED;
     }
 
 
-    public static boolean checkPermission(Context context, String permission) {
-        boolean result = false;
-        if (Build.VERSION.SDK_INT >= 23) {
-            try {
-                Class<?> clazz = Class.forName("android.content.Context");
-                Method method = clazz.getMethod("checkSelfPermission", String.class);
-                int rest = (Integer) method.invoke(context, permission);
-                if (rest == PackageManager.PERMISSION_GRANTED) {
-                    result = true;
-                } else {
-                    result = false;
-                }
-            } catch (Exception e) {
-                result = false;
-            }
-        } else {
-            PackageManager pm = context.getPackageManager();
-            if (pm.checkPermission(permission, context.getPackageName()) == PackageManager.PERMISSION_GRANTED) {
-                result = true;
-            }
-        }
-        return result;
-    }
-    public  static void requestPermission(Activity ct,int requestCode, String... permissions ) {
+    public static void requestPermission(Activity ct, int requestCode, String... permissions) {
         ActivityCompat.requestPermissions(ct, permissions, requestCode);
     }
 }

+ 73 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/stream/PermissionHelper.java

@@ -0,0 +1,73 @@
+package com.xzjmyk.pm.activity.util.stream;
+
+import android.app.Activity;
+import android.content.pm.PackageManager;
+import android.os.Build;
+import android.support.v4.app.ActivityCompat;
+import android.support.v4.content.ContextCompat;
+
+import com.xzjmyk.pm.activity.ui.erp.util.LogUtil;
+import com.xzjmyk.pm.activity.util.PermissionUtil;
+
+import static com.umeng.socialize.utils.DeviceConfig.context;
+
+/**
+ * Created by Bitliker on 2017/6/5.
+ */
+
+public class PermissionHelper {
+    private Activity activity;
+    public static final int DEFAULT_REQUEST = 0x31;
+
+    public PermissionHelper(Activity activity) {
+        this.activity = activity;
+    }
+
+    public void judgeAndrequestPermission(String[] permissions) {
+        if (lacksPermissions(permissions)) {
+            requestPermission(permissions);
+        }
+    }
+
+
+    public boolean isRequestPermissionsOk(int requestCode, String[] permissions, int[] grantResults) {
+        if (requestCode == PermissionUtil.DEFAULT_REQUEST) {
+            if (grantResults.length != 1 || grantResults[0] != PackageManager.PERMISSION_GRANTED) {
+                //TODO 没有获取到权限
+                LogUtil.i("没有获取到权限");
+                return false;
+            } else {
+                LogUtil.i("已经用户赋予权限获取到权限");
+                return true;
+            }
+        }
+        return false;
+    }
+
+    void requestPermission(String... permissions) {
+        ActivityCompat.requestPermissions(this.activity, permissions, DEFAULT_REQUEST);
+    }
+
+    // 是否有没有获取到的权限
+    private boolean lacksPermissions(String... permissions) {
+        if (Build.VERSION.SDK_INT >= 23) {
+            for (String permission : permissions) {
+                if (lacksPermission(permission)) {
+                    return true;
+                }
+            }
+        } else {
+            PackageManager pm = activity.getPackageManager();
+            for (String permission : permissions)
+                if (pm.checkPermission(permission, context.getPackageName()) == PackageManager.PERMISSION_GRANTED)
+                    return true;
+        }
+        return false;
+    }
+
+    // 判断是否缺少权限
+    private boolean lacksPermission(String permission) {
+        return ContextCompat.checkSelfPermission(activity, permission) ==
+                PackageManager.PERMISSION_DENIED;
+    }
+}

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/video/VideoActivity.java

@@ -95,7 +95,7 @@ public class VideoActivity extends AppCompatActivity implements MediaRecorder.On
     }
 
     private boolean validatePermission() {
-        if (!PermissionUtil.checkPermission(this, Manifest.permission.CAMERA)) {
+        if (!PermissionUtil.lacksPermissions(this, Manifest.permission.CAMERA)) {
             PermissionUtil.requestPermission(this, PermissionUtil.DEFAULT_REQUEST, Manifest.permission.CAMERA);
         }
         return true;

BIN
WeiChat/src/main/jniLibs/arm64-v8a/libmsc.so


BIN
WeiChat/src/main/jniLibs/armeabi-v7a/libmsc.so


BIN
WeiChat/src/main/jniLibs/armeabi/libmsc.so


BIN
WeiChat/src/main/jniLibs/mips/libmsc.so


BIN
WeiChat/src/main/jniLibs/mips64/libmsc.so


BIN
WeiChat/src/main/jniLibs/x86/libmsc.so


BIN
WeiChat/src/main/jniLibs/x86_64/libmsc.so


+ 96 - 86
WeiChat/src/main/res/layout/fragment_attendances.xml

@@ -14,56 +14,58 @@
         <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content">
-           <LinearLayout
-               android:layout_width="0dp"
-               android:layout_weight="2"
-               android:layout_height="wrap_content"
-               android:background="@color/oa_bg"
-               android:layout_marginTop="10dp"
-               android:layout_marginLeft="20dp"
-               >
-
-               <TextView
-                   android:id="@+id/start_date_tv"
-                   android:layout_width="wrap_content"
-                   android:layout_height="wrap_content"
-                   android:text="2017-2-1"
-                   android:drawableRight="@drawable/rili"
-                   android:drawablePadding="5dp"
-                   android:paddingTop="8dp"
-                   android:paddingBottom="8dp"
-                   android:paddingLeft="20dp"
-                   android:paddingRight="20dp"/>
-           </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="20dp"
+                android:layout_marginTop="10dp"
+                android:layout_weight="2"
+                android:background="@color/oa_bg">
+
+                <TextView
+                    android:id="@+id/start_date_tv"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:drawablePadding="5dp"
+                    android:drawableRight="@drawable/rili"
+                    android:gravity="center"
+                    android:paddingBottom="8dp"
+                    android:paddingLeft="20dp"
+                    android:paddingRight="20dp"
+                    android:paddingTop="8dp"
+                    android:text="2017-2-1" />
+            </LinearLayout>
+
             <TextView
                 android:layout_width="0dp"
-                android:layout_weight="1"
                 android:layout_height="wrap_content"
-                android:text="@string/sign_to"
                 android:layout_marginTop="15dp"
+                android:layout_weight="1"
                 android:gravity="center"
-                />
+                android:text="@string/sign_to" />
+
             <LinearLayout
                 android:layout_width="0dp"
-                android:layout_weight="2"
                 android:layout_height="wrap_content"
-                android:orientation="horizontal"
-                android:background="@color/oa_bg"
-                android:layout_marginTop="10dp"
                 android:layout_marginRight="20dp"
-                >
+                android:layout_marginTop="10dp"
+                android:layout_weight="2"
+                android:background="@color/oa_bg"
+                android:orientation="horizontal">
 
                 <TextView
                     android:id="@+id/end_date_tv"
-                    android:layout_width="wrap_content"
+                    android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:text="2017-2-28"
-                    android:drawableRight="@drawable/rili"
                     android:drawablePadding="5dp"
-                    android:paddingTop="8dp"
+                    android:drawableRight="@drawable/rili"
+                    android:gravity="center"
                     android:paddingBottom="8dp"
                     android:paddingLeft="20dp"
-                    android:paddingRight="20dp"/>
+                    android:paddingRight="20dp"
+                    android:paddingTop="8dp"
+                    android:text="2017-2-28" />
             </LinearLayout>
 
 
@@ -72,160 +74,168 @@
         <View
             android:layout_width="match_parent"
             android:layout_height="8dp"
-            android:background="@color/oa_bg"
             android:layout_marginTop="10dp"
-            />
+            android:background="@color/oa_bg" />
 
         <RelativeLayout
             android:layout_width="wrap_content"
             android:layout_height="wrap_content">
+
             <ImageView
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:src="@drawable/qinfenbang"
                 android:layout_marginLeft="10dp"
-                android:layout_marginTop="8dp"/>
+                android:layout_marginTop="8dp"
+                android:src="@drawable/qinfenbang" />
+
             <TextView
                 android:id="@+id/all_hardworking_tv"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:text="@string/sign_look_alldatas"
-                android:layout_marginTop="10dp"
-                android:drawableRight="@drawable/chakan"
                 android:layout_alignParentRight="true"
                 android:layout_marginRight="10dp"
+                android:layout_marginTop="10dp"
                 android:background="@drawable/selector_me_menu_item_bg"
-                android:textColor="@color/blue"/>
+                android:drawableRight="@drawable/chakan"
+                android:text="@string/sign_look_alldatas"
+                android:textColor="@color/blue" />
         </RelativeLayout>
 
         <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:orientation="horizontal"
-            android:paddingTop="20dp"
-            android:paddingBottom="20dp">
+            android:paddingBottom="20dp"
+            android:paddingTop="20dp">
 
             <LinearLayout
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
-                android:orientation="vertical"
                 android:gravity="center_horizontal"
-                >
-            <TextView
-                android:id="@+id/hardworking_first_tv"
-                android:layout_width="60dp"
-                android:layout_height="60dp"
-                android:background="@drawable/garden_padding_bg"
-                android:gravity="center"
-                android:textSize="12sp"
-                />
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="@string/sign_the_first"
-                android:layout_marginTop="10dp"/>
-        </LinearLayout>
+                android:orientation="vertical">
+
+                <TextView
+                    android:id="@+id/hardworking_first_tv"
+                    android:layout_width="60dp"
+                    android:layout_height="60dp"
+                    android:background="@drawable/garden_padding_bg"
+                    android:gravity="center"
+                    android:textSize="12sp" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="10dp"
+                    android:text="@string/sign_the_first" />
+            </LinearLayout>
 
 
             <LinearLayout
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
-                android:orientation="vertical"
-                android:gravity="center_horizontal">
+                android:gravity="center_horizontal"
+                android:orientation="vertical">
+
                 <TextView
                     android:id="@+id/hardworking_second_tv"
                     android:layout_width="60dp"
                     android:layout_height="60dp"
                     android:background="@drawable/garden_padding_bg"
                     android:gravity="center"
-                    android:textSize="12sp"
-                    />
+                    android:textSize="12sp" />
+
                 <TextView
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:text="@string/sign_the_second"
-                    android:layout_marginTop="10dp"/>
+                    android:layout_marginTop="10dp"
+                    android:text="@string/sign_the_second" />
             </LinearLayout>
 
             <LinearLayout
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
-                android:orientation="vertical"
-                android:gravity="center_horizontal">
+                android:gravity="center_horizontal"
+                android:orientation="vertical">
+
                 <TextView
                     android:id="@+id/hardworking_third_tv"
                     android:layout_width="60dp"
                     android:layout_height="60dp"
                     android:background="@drawable/garden_padding_bg"
                     android:gravity="center"
-                    android:textSize="12sp"
-                    />
+                    android:textSize="12sp" />
+
                 <TextView
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:text="@string/sign_the_third"
-                    android:layout_marginTop="10dp"/>
+                    android:layout_marginTop="10dp"
+                    android:text="@string/sign_the_third" />
             </LinearLayout>
         </LinearLayout>
+
         <View
             android:layout_width="match_parent"
             android:layout_height="8dp"
-            android:background="@color/oa_bg"
-            />
+            android:background="@color/oa_bg" />
 
         <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:paddingTop="8dp"
+            android:layout_marginLeft="10dp"
             android:paddingBottom="8dp"
-            android:layout_marginLeft="10dp">
+            android:paddingTop="8dp">
+
             <TextView
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="2"
-                android:text="@string/name"/>
+                android:text="@string/name" />
+
             <TextView
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="2"
-                android:text="@string/sign_late"/>
+                android:text="@string/sign_late" />
+
             <TextView
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="2"
-                android:text="@string/sign_leave"/>
+                android:text="@string/sign_leave" />
+
             <TextView
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="2"
-                android:text="@string/sign_Absenteeism"/>
+                android:text="@string/sign_Absenteeism" />
+
             <TextView
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="2"
                 android:text="@string/sign_actualtime"
-                android:visibility="gone"/>
+                android:visibility="gone" />
+
             <ImageView
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
-                android:layout_weight="1"/>
+                android:layout_weight="1" />
 
         </LinearLayout>
+
         <View
             android:layout_width="match_parent"
             android:layout_height="1dp"
-            android:background="@color/oa_bg"
-            />
+            android:background="@color/oa_bg" />
 
         <com.xzjmyk.pm.activity.view.MyListView
             android:id="@+id/attendances_mylv"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:layout_marginLeft="10dp">
-        </com.xzjmyk.pm.activity.view.MyListView>
+            android:layout_marginLeft="10dp"></com.xzjmyk.pm.activity.view.MyListView>
     </LinearLayout>
 
 </ScrollView>

+ 1 - 0
WeiChat/src/main/res/values-en/strings.xml

@@ -1269,4 +1269,5 @@
     <string name="nday">正常打卡</string>
     <string name="outdays">出差</string>
     <string name="signcard">补卡</string>
+    <string name="sure_delete_content">你确定删除该联系人吗</string>
 </resources>

+ 5 - 1
WeiChat/src/main/res/values-zh-rCN/strings.xml

@@ -490,7 +490,6 @@
     <string name="position_error">地点为空或格式不正确</string>
     <string name="meet_manager_error">会议管理员为空或格式不正确</string>
     <string name="join_numer_error">参会人员不符要求</string>
-
     <string name="not_power_check_bill">您没有查看单据的权限</string>
     <string name="resourcer">执行人</string>
     <string name="networks_out">当前网络不可用,请稍后重试!</string>
@@ -506,6 +505,7 @@
     <string name="location_error_try_agen">位置信息不正确,请重新选择地址</string>
     <string name="save_ok">保存成功</string>
     <string name="sure_delete_mission">你确定删除该外勤计划吗</string>
+    <string name="sure_delete_content">你确定删除该联系人吗</string>
     <string name="maintain_customers">客情维护</string>
     <string name="business_process">业务办理</string>
     <string name="other_vivit">其它拜访</string>
@@ -692,6 +692,10 @@
     <string name="outdays">出差</string>
     <string name="signcard">补卡</string>
 
+    <string name="add_blacklist">加入黑名单</string>
+    <string name="cancel_attention">取消关注</string>
+    <string name="delete_all">彻底删除</string>
+    <string name="remark_name_format_error">备注名不合法,只允许中文、英文、字母和下划线,且长度为3至10个字符</string>
     <!--end by Bitliker-->
 
     <!--start by Arison-->

+ 1 - 0
WeiChat/src/main/res/values-zh-rTW/strings.xml

@@ -528,6 +528,7 @@
     <string name="will_save_conflict">保存本班次會將衝突的部門人員加入本班次,是否繼續? </string>
     <string name="add_flihts">新增班次</string>
     <string name="edit_flihts">修改班次</string>
+    <string name="sure_delete_content">你確定删除該連絡人嗎</string>
     <string name="work_name">班次名稱</string>
     <string name="work_time">考勤時間</string>
     <string name="work_day">考勤日期</string>

+ 1 - 0
WeiChat/src/main/res/values/strings.xml

@@ -1677,4 +1677,5 @@
     <string name="nday">正常打卡</string>
     <string name="outdays">出差</string>
     <string name="signcard">补卡</string>
+    <string name="sure_delete_content">你确定删除该联系人吗</string>
 </resources>

+ 1 - 1
gradle/wrapper/gradle-wrapper.properties

@@ -1,4 +1,4 @@
-#Thu Jun 01 14:42:14 CST 2017
+#Mon Jun 05 09:47:35 CST 2017
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME