public class PermissonUtil {
private String TAG = "PermissonUtil";
private static PermissonUtil permissonUtil;
private int index = 0;
private ArrayMap<Integer, RequestCallback> map = new ArrayMap<>();
private PermissonUtil() {
}
public static PermissonUtil getInstance() {
if (permissonUtil == null) {
permissonUtil = new PermissonUtil();
}
return permissonUtil;
}
public interface RequestCallback {
void onResult(boolean isGranted, String[] permissins);
}
public void requestPermissons(Activity activity, RequestCallback requestCallback,
String... permissins) {
map.put(index, requestCallback);
boolean allPermissonGrant = true;
for (int i = 0; i < permissins.length; i++) {
if (ActivityCompat.checkSelfPermission(activity, permissins[i]) !=
PackageManager.PERMISSION_GRANTED) {
allPermissonGrant = false;
break;
}
}
if (allPermissonGrant) {
//请求的权限 已获取到
requestCallback.onResult(true, permissins);
//移除map中的元素
map.remove(index);
} else {
//有 未获取到的权限,进行请求
ActivityCompat.requestPermissions(activity, permissins, index);
}
index++;
}
public void requestPermissons(Fragment fragment, RequestCallback requestCallback,
String... permissins) {
map.put(index, requestCallback);
boolean allPermissonGrant = true;
for (int i = 0; i < permissins.length; i++) {
if (ActivityCompat.checkSelfPermission(fragment.getContext(), permissins[i]) !=
PackageManager.PERMISSION_GRANTED) {
allPermissonGrant = false;
break;
}
}
if (allPermissonGrant) {
//请求的权限 已获取到
requestCallback.onResult(true, permissins);
//移除map中的元素
map.remove(index);
} else {
//有 未获取到的权限,进行请求
fragment.requestPermissions(permissins, index);
}
index++;
}
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (map != null) {
map.get(requestCode).onResult(isAllGranted(grantResults, permissions), permissions);
//移除map中的元素
map.remove(requestCode);
}
}
private boolean isAllGranted(int[] grantResults, String[] permissions) {
boolean allPermissonGrant = true;
for (int i = 0; i < grantResults.length; i++) {
if (grantResults[i] != PackageManager.PERMISSION_GRANTED) {
allPermissonGrant = false;
Log.i(TAG, "--" + permissions[i] + "权限不同意");
break;
}
}
return allPermissonGrant;
}
}
android 权限请求工具类
最新推荐文章于 2024-06-12 14:58:43 发布