zoukankan      html  css  js  c++  java
  • 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.ford.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;
    }
    }
  • 相关阅读:
    pthread_key_t和pthread_key_create()详解
    oracle的时间
    spring加载bean报错:expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
    MyBatis调用存储过程
    java的时间
    java的日期
    java中的多态
    笔记本设置wifi热点并抓包
    WiresShark使用说明
    HTTP协议概述
  • 原文地址:https://www.cnblogs.com/adamli/p/13139704.html
Copyright © 2011-2022 走看看