Android M 新的运行时权限机制,很多开发者都知道,有危险的权限就要先申请权限才能使用相应的功能,不然会让app漰掉。
但有什么好的方法封装呢?而有些手机定位又有一个坑!
1.首先,先了解6.0权限机制:Android M 新的运行时权限开发者需要知道的一切
2.查看GitHub上面大神写的:GitHub PERMISSION
进行了上面二步,你可以从github时选择一个库来开发app。
当然最好是自己来开发,因为引用别人的,有可能有bug不好调试,或者与app功能逻辑有出入等。
下面是我自己封装了一个类PermissionHelper,可以随时要控制权限时进行控制,
先贴上如何使用代码(这是在Activity或者Fragment中使用):
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mPermissionHelper = new PermissionHelper(this);
mPermissionHelper.checkPermisson(new PermissionHelper.OnPermissionListener() {
@Override
public void onAgreePermission() {
showToast("同意权限了");
// do something
}
@Override
public void onDeniedPermission() {
showToast("拒绝权限了");
finish(); // 当界面一定通过权限才能继续,就要加上这行
}
}, Manifest.permission.SEND_SMS);
}
@Override
public void onResume() {
super.onResume();
mPermissionHelper.onResume(); // 当界面一定通过权限才能继续,就要加上这行
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
mPermissionHelper.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
API:
public void checkPermisson(OnPermissionListener listener,
String… permissons)
参数一为监听,参数二是需要的权限
PermissionHelper类:
public class PermissionHelper {
private Object mObject; // 请求权限的对象(Activity,fragment)
private Dialog mPermissionDialog;
private static Map<String, String>