分享权限工具类 GetAndRequestPermission
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Build;
import android.util.Log;
import androidx.core.app.ActivityCompat;
import java.util.ArrayList;
import java.util.List;
public class GetAndRequestPermission {
public static GetAndRequestPermission getAndRequestPermission;
private Activity mAvtivity;
private static final int REQUEST_CRITICAL_PERMISSIONS = 10;
//用户所有权限
private static String[] CRITICAL_PERMISSION_ARRAY = null;
public static GetAndRequestPermission getInstance() {
if (getAndRequestPermission == null) {
getAndRequestPermission = new GetAndRequestPermission();
}
return getAndRequestPermission;
}
public void requestPermissions(Activity mAvtivity){
this.mAvtivity = mAvtivity;
getPermisson(mAvtivity);
}
//获取权限
@TargetApi(Build.VERSION_CODES.M)
private void getPermisson(Context context) {
try {
PackageManager pm = context.getPackageManager();
PackageInfo pi = pm.getPackageInfo(context.getPackageName(), 0);
//得到自己的包名
String pkgName = pi.packageName;
PackageInfo pkgInfo = pm.getPackageInfo(pkgName, PackageManager.GET_PERMISSIONS);
String sharedPkgList[] = pkgInfo.requestedPermissions;
List<String> permissionLst = new ArrayList();
if (sharedPkgList.length > 0)
for (int i = 0; i < sharedPkgList.length; i++) {
String permName = sharedPkgList[i];
//判断是否有这个权限
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&mAvtivity.checkSelfPermission(permName)
!= PackageManager.PERMISSION_GRANTED) {
permissionLst.add(permName);
}
}
if (permissionLst.size() > 0) {
CRITICAL_PERMISSION_ARRAY = new String[permissionLst.size()];
for (int i = 0; i < permissionLst.size(); i++) {
CRITICAL_PERMISSION_ARRAY[i] = permissionLst.get(i);
}
}
if (CRITICAL_PERMISSION_ARRAY != null && CRITICAL_PERMISSION_ARRAY.length > 0) {
requestPermission();
}
} catch (Exception e) {
Log.e("##ddd", "Could'nt retrieve permissions for package");
}
}
public void requestPermission() {
ActivityCompat.requestPermissions(
mAvtivity,
CRITICAL_PERMISSION_ARRAY,
REQUEST_CRITICAL_PERMISSIONS
);
}
}
调用:
GetAndRequestPermission.getInstance().requestPermissions(this);//动态申请权限
-END