package com.demo.PunchDemo;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import java.util.ArrayList;
import java.util.List;
/**
* Created by :方燚
* Time :2018/4/26.
* Description:
*/
public class PermissionUtils {
/**
* 检测权限
*
* @return true:已授权; false:未授权;
*/
public static boolean checkPermission(Context context, String permission) {
if (ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_GRANTED)
return true;
else
return false;
}
/**
* 检测多个权限
*
* @return 未授权的权限
*/
public static List<String> checkMorePermissions(Context context, String[] permissions) {
List<String> permissionList = new ArrayList<>();
for (int i = 0; i < permissions.length; i++) {
if (!checkPermission(context, permissions[i]))
permissionList.add(permissions[i]);
}
return permissionList;
}
/**
* 请求权限
*/
public static void requestPermission(Context context, String permission, int requestCode) {
ActivityCompat.requestPermissions((Activity) context, new String[]{permission}, requestCode);
}
/**
* 请求多个权限
*/
public static void requestMorePermissions(Context context, List permissionList, int requestCode) {
String[] permissions = (String[]) permissionList.toArray(new String[permissionList.size()]);
requestMorePermissions(context, permissions, requestCode);
}
/**
* 请求多个权限
*/
public static void requestMorePermissions(Context context, String[] permissions, int requestCode) {
ActivityCompat.requestPermissions((Activity) context, permissions, requestCode);
}
/**
* 判断是否已拒绝过权限
*
* @return
* @describe :如果应用之前请求过此权限但用户拒绝,此方法将返回 true;
* -----------如果应用第一次请求权限或 用户在过去拒绝了权限请求,
* -----------并在权限请求系统对话框中选择了 Don't ask again 选项,此方法将返回 false。
*/
public static boolean judgePermission(Context context, String permission) {
if (ActivityCompat.shouldShowRequestPermissionRationale((Activity) context, permission))
return true;
else
return false;
}
/**
* 检测权限并请求权限:如果没有权限,则请求权限
*/
public static void checkAndRequestPermission(Context context, String permission, int requestCode) {
if (!checkPermission(context, permission)) {
requestPermission(context, permission, requestCode);
}
}
/**
* 检测并请求多个权限
*/
public static void checkAndRequestMorePermissions(Context context, String[] permissions, int requestCode) {
List<String> permissionList = checkMorePermissions(context, permissions);
requestMorePermissions(context, permissionList, requestCode);
}
/**
* 检测权限
*
* @describe:具体实现由回调接口决定
*/
public static void checkPermission(Context context, String permission, PermissionCheckCallBack callBack) {
if (checkPermission(context, permission)) { // 用户已授予权限
callBack.onHasPermission();
} else {
if (judgePermission(context, permission)) // 用户之前已拒绝过权限申请
callBack.onUserHasAlreadyTurnedDown(permission);
else // 用户之前已拒绝并勾选了不在询问、用户第一次申请权限。
callBack.onUserHasAlreadyTurnedDownAndDontAsk(permission);
}
}
/**
* 检测多个权限
*
* @describe:具体实现由回调接口决定
*/
public static void checkMorePermissions(Context context, String[] permissions, PermissionCheckCallBack callBack) {
List<String> permissionList = checkMorePermissions(context, permissions);
if (permissionList.size() == 0) { // 用户已授予权限
callBack.onHasPermission();
} else {
boolean isFirst = true;
for (int i = 0; i < permissionList.size(); i++) {
String permission = permissionList.get(i);
if (judgePermission(context, permission)) {
isFirst = false;
break;
}
}
String[] unauthorizedMorePermissions = (String[]) permissionList.toArray(new String[permissionList.size()]);
if (isFirst)// 用户之前已拒绝过权限申请
callBack.onUserHasAlreadyTurnedDownAndDontAsk(unauthorizedMorePermissions);
else // 用户之前已拒绝并勾选了不在询问、用户第一次申请权限。
callBack.onUserHasAlreadyTurnedDown(unauthorizedMorePermissions);
}
}
/**
* 检测并申请权限
*/
public static void checkAndRequestPermission(Context context, String permission, int requestCode, PermissionRequestSuccessCallBack callBack) {
if (checkPermission(context, permission)) {// 用户已授予权限
callBack.onHasPermission();
} else {
requestPermission(context, permission, requestCode);
}
}
/**
* 检测并申请多个权限
*/
public static void checkAndRequestMorePermissions(Context context, String[] permissions, int requestCode, PermissionRequestSuccessCallBack callBack) {
List<String> permissionList = checkMorePermissions(context, permissions);
if (permissionList.size() == 0) { // 用户已授予权限
callBack.onHasPermission();
} else {
requestMorePermissions(context, permissionList, requestCode);
}
}
/**
* 判断权限是否申请成功
*/
public static boolean isPermissionRequestSuccess(int[] grantResults) {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED)
return true;
else
return false;
}
/**
* 用户申请权限返回
*/
public static void onRequestPermissionResult(Context context, String permission, int[] grantResults, PermissionCheckCallBack callback) {
if (PermissionUtils.isPermissionRequestSuccess(grantResults)) {
callback.onHasPermission();
} else {
if (PermissionUtils.judgePermission(context, permission)) {
callback.onUserHasAlreadyTurnedDown(permission);
} else {
callback.onUserHasAlreadyTurnedDownAndDontAsk(permission);
}
}
}
/**
* 用户申请多个权限返回
*/
public static void onRequestMorePermissionsResult(Context context, String[] permissions, PermissionCheckCallBack callback) {
boolean isBannedPermission = false;
List<String> permissionList = checkMorePermissions(context, permissions);
if (permissionList.size() == 0)
callback.onHasPermission();
else {
for (int i = 0; i < permissionList.size(); i++) {
if (!judgePermission(context, permissionList.get(i))) {
isBannedPermission = true;
break;
}
}
// 已禁止再次询问权限
if (isBannedPermission)
callback.onUserHasAlreadyTurnedDownAndDontAsk(permissions);
else // 拒绝权限
callback.onUserHasAlreadyTurnedDown(perm
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
PunchDemo-master.zip (50个子文件)
PunchDemo-master
gradle.properties 730B
gradle
wrapper
gradle-wrapper.jar 52KB
gradle-wrapper.properties 230B
app
src
androidTest
java
com
demo
PunchDemo
ExampleInstrumentedTest.java 737B
test
java
com
demo
PunchDemo
ExampleUnitTest.java 396B
main
java
com
demo
PunchDemo
BaseActivity.java 6KB
PermissionUtils.java 9KB
MainActivity.java 7KB
LocationUtil.java 5KB
res
mipmap-xxhdpi
ic_launcher_round.png 10KB
ic_launcher.png 6KB
mipmap-hdpi
ic_launcher_round.png 5KB
ic_launcher.png 3KB
drawable-v24
ic_launcher_foreground.xml 2KB
mipmap-anydpi-v26
ic_launcher.xml 272B
ic_launcher_round.xml 272B
mipmap-mdpi
ic_launcher_round.png 3KB
ic_launcher.png 2KB
mipmap-xxxhdpi
ic_launcher_round.png 15KB
ic_launcher.png 9KB
mipmap-xhdpi
ic_launcher_round.png 7KB
location_selected.png 3KB
ic_launcher.png 4KB
values
colors.xml 208B
strings.xml 72B
styles.xml 383B
layout
activity_main.xml 2KB
drawable
ic_launcher_background.xml 5KB
siginin_bg.xml 188B
jniLibs
armeabi-v7a
libAMapSDK_MAP_v6_7_0.so 2.75MB
armeabi
libAMapSDK_MAP_v6_7_0.so 2.75MB
arm64-v8a
libAMapSDK_MAP_v6_7_0.so 3.79MB
x86_64
libAMapSDK_MAP_v6_7_0.so 3.77MB
x86
libAMapSDK_MAP_v6_7_0.so 3.43MB
AndroidManifest.xml 2KB
proguard-rules.pro 751B
libs
AMap3DMap_6.7.0_AMapSearch_6.5.0_20190213.jar 3.39MB
AMap_Location_V4.5.0_20190121.jar 354KB
build.gradle 1KB
.gitignore 7B
gradlew.bat 2KB
build.gradle 546B
.idea
runConfigurations.xml 564B
vcs.xml 180B
misc.xml 2KB
modules.xml 355B
gradle.xml 626B
settings.gradle 15B
gradlew 5KB
.gitignore 118B
共 50 条
- 1
资源评论
longtaofeixiang
- 粉丝: 0
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功