/** * Created by stevefat on 2017/2/27. */ public class BaseActivity extends AppCompatActivity { private List<String> needPermission; private final int REQUEST_CODE_PERMISSION = 0; private String[] permissionArray = new String[]{ Manifest.permission.READ_CONTACTS, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.SEND_SMS, Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO, Manifest.permission.ACCESS_COARSE_LOCATION }; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); } public void askMultiplePermission() { needPermission = new ArrayList<>(); for (String permissionName : permissionArray) { if (!PermissionHelper.checkIsAskPermission(this, permissionName)) { needPermission.add(permissionName); } } if (needPermission.size() > 0) { //开始申请权限 ActivityCompat.requestPermissions(this, needPermission.toArray(new String[needPermission.size()]), REQUEST_CODE_PERMISSION); } else { //获取数据 } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { // super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode) { case REQUEST_CODE_PERMISSION: Map<String, Integer> permissionMap = new HashMap<>(); for (String name : needPermission) { permissionMap.put(name, PackageManager.PERMISSION_GRANTED); } for (int i = 0; i < permissions.length; i++) { permissionMap.put(permissions[i], grantResults[i]); } if (checkIsAskPermissionState(permissionMap, permissions)) { //获取数据 } else { //提示权限获取不完成,可能有的功能不能使用 } break; } } public boolean checkIsAskPermission(Context context, String permission) { if (ContextCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) { return false; } else { return true; } } public boolean checkIsAskPermissionState(Map<String, Integer> maps, String[] list) { for (int i = 0; i < list.length; i++) { if (maps.get(list[i]) != PackageManager.PERMISSION_GRANTED) { return false; } } return true; } }