以获得地理位置权限为例
1.添加需要权限
//当Android6.0系统以上时,动态获取权限
private static final String[] PERMISSIONS = new String[]{
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.INTERNET};
2.添加标志
private boolean permissionGranted = true;
//权限的标志
private static final int PERMISSION_CODES = 1001;
3.判断当前版本
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermission();
}
4.手动申请
/**
* 动态的进行权限请求
*/
@TargetApi(Build.VERSION_CODES.M)
private void requestPermission() {
List<String> p = new ArrayList<>();
for (String permission : PERMISSIONS) {
if (ContextCompat.checkSelfPermission(getContext(), permission) != PackageManager.PERMISSION_GRANTED) {
p.add(permission);
}
}
if (p.size() > 0) {
requestPermissions(p.toArray(new String[p.size()]), PERMISSION_CODES);
}
}
5.申请回调
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNul