|
|
@@ -1,13 +1,20 @@
|
|
|
package com.uas.appcontact.ui.fragment;
|
|
|
|
|
|
+import android.Manifest;
|
|
|
import android.content.BroadcastReceiver;
|
|
|
import android.content.Context;
|
|
|
import android.content.Intent;
|
|
|
import android.content.IntentFilter;
|
|
|
+import android.content.pm.PackageManager;
|
|
|
+import android.os.Build;
|
|
|
import android.os.Bundle;
|
|
|
+import android.support.annotation.NonNull;
|
|
|
+import android.support.v4.app.ActivityCompat;
|
|
|
+import android.support.v4.content.ContextCompat;
|
|
|
import android.support.v4.content.LocalBroadcastManager;
|
|
|
import android.text.Editable;
|
|
|
import android.text.TextUtils;
|
|
|
+import android.util.SparseArray;
|
|
|
import android.view.Gravity;
|
|
|
import android.view.LayoutInflater;
|
|
|
import android.view.Menu;
|
|
|
@@ -19,6 +26,7 @@ import android.widget.LinearLayout;
|
|
|
import android.widget.PopupWindow;
|
|
|
import android.widget.TextView;
|
|
|
|
|
|
+import com.common.LogUtil;
|
|
|
import com.common.data.ListUtils;
|
|
|
import com.common.data.StringUtil;
|
|
|
import com.common.system.DisplayUtil;
|
|
|
@@ -34,6 +42,7 @@ import com.core.model.EmployeesEntity;
|
|
|
import com.core.model.Friend;
|
|
|
import com.core.net.http.http.OAHttpHelper;
|
|
|
import com.core.utils.CommonUtil;
|
|
|
+import com.core.utils.ToastUtil;
|
|
|
import com.core.utils.sortlist.BaseComparator;
|
|
|
import com.core.utils.sortlist.BaseSortModel;
|
|
|
import com.core.utils.sortlist.PingYinUtil;
|
|
|
@@ -59,7 +68,6 @@ import java.util.Collections;
|
|
|
import java.util.List;
|
|
|
|
|
|
import se.emilsjolander.stickylistheaders.StickyListHeadersListView;
|
|
|
-
|
|
|
/**
|
|
|
* Created by Bitliker on 2017/9/1.
|
|
|
*/
|
|
|
@@ -89,6 +97,11 @@ public class ContactsFragment extends SupportToolBarFragment
|
|
|
private boolean isB2b;
|
|
|
private CustomProgressDialog progressDialog;
|
|
|
|
|
|
+ //处理权限
|
|
|
+ private SparseArray<Runnable> allowablePermissionRunnables;
|
|
|
+ private SparseArray<Runnable> disallowablePermissionRunnables;
|
|
|
+ private int permissionItem = 0;
|
|
|
+
|
|
|
private BroadcastReceiver receiver = new BroadcastReceiver() {
|
|
|
@Override
|
|
|
public void onReceive(Context context, Intent intent) {
|
|
|
@@ -113,6 +126,7 @@ public class ContactsFragment extends SupportToolBarFragment
|
|
|
LocalBroadcastManager.getInstance(ct).registerReceiver(receiver, inputFilter);
|
|
|
setHasOptionsMenu(true);
|
|
|
isB2b = ApiUtils.getApiModel() instanceof ApiPlatform;
|
|
|
+ initPermission(0);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -154,6 +168,31 @@ public class ContactsFragment extends SupportToolBarFragment
|
|
|
mListener = (ImStatusListener) context;
|
|
|
}
|
|
|
}
|
|
|
+ private void initPermission(final int item) {
|
|
|
+ Runnable runnable = new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ initPermission(item + 1);
|
|
|
+ }
|
|
|
+ };
|
|
|
+ String permission = null;
|
|
|
+ switch (item) {
|
|
|
+ case 0:
|
|
|
+ permission = Manifest.permission.READ_CONTACTS;
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ permission = Manifest.permission.WRITE_CONTACTS;
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ permission = Manifest.permission.GET_ACCOUNTS;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (item <= 2) {
|
|
|
+ requestPermission(permission, runnable, runnable);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
|
|
|
private void initView() {
|
|
|
setTitle(R.string.contact_title);
|
|
|
@@ -304,8 +343,9 @@ public class ContactsFragment extends SupportToolBarFragment
|
|
|
if (friend.getUserId().equals(Friend.ID_NEW_FRIEND_MESSAGE)) {// 新朋友消息
|
|
|
intent = new Intent(getActivity(), NewFriendActivity.class);
|
|
|
} else if (friend.getUserId().equals(Friend.ID_SYSTEM_MESSAGE)) {// 新朋友消息
|
|
|
- intent = new Intent("com.modular.message.ChatActivity");
|
|
|
- intent.putExtra("friend", friend);
|
|
|
+// intent = new Intent("com.modular.message.ChatActivity");
|
|
|
+// intent.putExtra("friend", friend);
|
|
|
+ ToastUtil.showToast(ct,"暂不支持");
|
|
|
} else {
|
|
|
intent = new Intent("com.modular.basic.BasicInfoActivity");
|
|
|
intent.putExtra(AppConstant.EXTRA_NICK_CODE, friend.getPhone());
|
|
|
@@ -471,5 +511,70 @@ public class ContactsFragment extends SupportToolBarFragment
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ public void requestPermission(String permission, Runnable allowableRunnable, Runnable disallowableRunnable) {
|
|
|
+ permissionItem++;
|
|
|
+ LogUtil.i("requestPermission");
|
|
|
+ if (allowableRunnable != null) {
|
|
|
+ if (allowablePermissionRunnables == null) {
|
|
|
+ allowablePermissionRunnables = new SparseArray<>();
|
|
|
+ }
|
|
|
+ allowablePermissionRunnables.put(permissionItem, allowableRunnable);
|
|
|
+ }
|
|
|
+ if (disallowableRunnable != null) {
|
|
|
+ if (disallowablePermissionRunnables == null) {
|
|
|
+ disallowablePermissionRunnables = new SparseArray<>();
|
|
|
+ }
|
|
|
+ disallowablePermissionRunnables.put(permissionItem, disallowableRunnable);
|
|
|
+ }
|
|
|
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
|
|
+ //减少是否拥有权限
|
|
|
+ int checkCallPhonePermission = ContextCompat.checkSelfPermission(ct, permission);
|
|
|
+ if (checkCallPhonePermission != PackageManager.PERMISSION_GRANTED) {//没有获取到权限
|
|
|
+// if (!shouldShowRequestPermissionRationale(permission)) {
|
|
|
+ //弹出对话框接收权限
|
|
|
+ LogUtil.i("ActivityCompat.requestPermissions=" + permission);
|
|
|
+ ActivityCompat.requestPermissions(ct, new String[]{permission}, permissionItem);
|
|
|
+// } else {
|
|
|
+// ToastUtil.showToast(ct, R.string.not_camera_permission);
|
|
|
+// }
|
|
|
+ } else {
|
|
|
+ if (allowableRunnable != null) {
|
|
|
+ allowableRunnable.run();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (allowableRunnable != null) {
|
|
|
+ allowableRunnable.run();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
+ @Override
|
|
|
+ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
|
|
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
|
|
+ if (permissions != null) {
|
|
|
+ for (String p : permissions) {
|
|
|
+ LogUtil.i("permission=" + p);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (grantResults != null && grantResults.length > 0) {
|
|
|
+ if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
|
|
+ if (allowablePermissionRunnables != null) {
|
|
|
+ Runnable allowRun = allowablePermissionRunnables.get(requestCode);
|
|
|
+ if (allowRun != null) {
|
|
|
+ allowRun.run();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+ if (disallowablePermissionRunnables != null) {
|
|
|
+ Runnable disallowRun = disallowablePermissionRunnables.get(requestCode);
|
|
|
+ if (disallowRun != null) {
|
|
|
+ disallowRun.run();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|