PermissionUtil

package com.android.demo.lileidemo.utils;

import android.Manifest;
import android.app.Activity;
import android.app.AppOpsManager;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build;
import android.provider.Settings;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.text.TextUtils;

import com.android.demo.lileidemo.MyApplication;
import com.android.demo.lileidemo.constant.AppConstants;
import com.demo.sync.basics.utils.LogUtil;

import java.util.ArrayList;

/**
* date: 03/16/2020.
* author: lilei.
*/
public class PermissionUtil {
private static final String TAG = AppConstants.APP_TAG + "PermissionUtil ";

/**
* checkPermissionsGranted.
*
* @param context context.
* @param permissions permissions.
* @return boolean.
*/
public static boolean checkPermissionsGranted(Context context, String[] permissions) {
for (String permission : permissions) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (context.checkSelfPermission(permission)
!= PackageManager.PERMISSION_GRANTED) {
return false;
}
}
}
return true;
}

/**
* Check permission.
*
* @param context Context
*/
public static boolean checkPermission(Context context) {
return checkPermission(context, AppConstants.REQUIRED_PERMISSIONS);
}

/**
* Check permission.
*
* @param context Context
* @param permissions Which permissions need to be check
*/
private static boolean checkPermission(Context context, String[] permissions) {
ArrayList<String> permissionList = new ArrayList<>();
for (String p : permissions) {
if (ContextCompat.checkSelfPermission(context, p)
!= PackageManager.PERMISSION_GRANTED) {
permissionList.add(p);
}
}
if (permissionList.isEmpty()) {
LogUtil.d(TAG + "checkPermission 111");
return true;
}
String[] requestPermissions = new String[permissionList.size()];
permissionList.toArray(requestPermissions);
ActivityCompat.requestPermissions((Activity) context, requestPermissions, 0);
LogUtil.d(TAG + "checkPermission 222");
return false;
}

/**
* Check location permission.
*
* @return boolean.
*/
public static boolean checkLocationPermission() {
if (ContextCompat.checkSelfPermission(MyApplication.getAppContext(),
Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
|| ActivityCompat.checkSelfPermission(MyApplication.getAppContext(),
Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return false;
} else {
return true;
}
}

/**
* Has Permission To Read Network Stats.
*
* @param context context.
* @return boolean.
*/
public static boolean hasPermissionToReadNetworkStats(Context context) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
return true;
}
final AppOpsManager appOps = (AppOpsManager) context.getSystemService(
Context.APP_OPS_SERVICE);
int mode = appOps.checkOpNoThrow(AppOpsManager.OPSTR_GET_USAGE_STATS,
android.os.Process.myUid(), context.getPackageName());
if (mode == AppOpsManager.MODE_ALLOWED) {
return true;
}

return false;
}

/**
* Open the apps with permission to view usage page.
*
* @param context context.
*/
public static void requestReadNetworkStats(Context context) {
LogUtil.d(TAG + "requestReadNetworkStats.");
Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}

/**
* Is accessibility settings on.
*
* @param context context.
* @return boolean boolean.
*/
public static boolean isAccessibilitySettingsOn(Context context, String serviceName) {
int accessibilityEnabled = 0;

final String service = context.getPackageName() + "/" + serviceName;
//Log.i(TAG, "service:" + service);
try {
accessibilityEnabled = Settings.Secure.getInt(context.getApplicationContext()
.getContentResolver(), android.provider.Settings.Secure.ACCESSIBILITY_ENABLED);
LogUtil.d(TAG + "accessibilityEnabled = " + accessibilityEnabled);
} catch (Settings.SettingNotFoundException e) {
LogUtil.e(TAG + "Error finding setting, default accessibility to not found: "
+ e.getMessage());
}
TextUtils.SimpleStringSplitter stringColonSplitter =
new TextUtils.SimpleStringSplitter(':');

if (accessibilityEnabled == 1) {
LogUtil.d(TAG + "***ACCESSIBILITY IS ENABLED*** -----------------");
String settingValue = Settings.Secure.getString(context.getApplicationContext()
.getContentResolver(), Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES);
if (settingValue != null) {
stringColonSplitter.setString(settingValue);
while (stringColonSplitter.hasNext()) {
String accessibilityService = stringColonSplitter.next();

LogUtil.d(TAG + "-------------- > accessibilityService :: "
+ accessibilityService + " " + service);
if (accessibilityService.equalsIgnoreCase(service)) {
LogUtil.d(TAG + "We've found the correct setting - "
+ "accessibility is switched on!");
return true;
}
}
}
} else {
LogUtil.d(TAG + "***ACCESSIBILITY IS DISABLED***");
}
return false;
}
}
posted @ 2020-06-16 10:42  adam.li  阅读(300)  评论(0编辑  收藏  举报