导航菜单

页面标题

页面副标题

天上人间 v3.1 - PermissionDelegateImplV23.java 源代码

正在查看: 天上人间 v3.1 应用的 PermissionDelegateImplV23.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package com.hjq.permissions;

import android.app.Activity;
import android.app.NotificationManager;
import android.content.Context;
import android.content.Intent;
import android.os.PowerManager;
import android.provider.Settings;

class PermissionDelegateImplV23 extends PermissionDelegateImplV21 {
    PermissionDelegateImplV23() {
    }

    public boolean isGrantedPermission(Context context, String str) {
        if (Permission.getPermissionFromAndroidVersion(str) > AndroidVersion.getAndroidVersionCode()) {
            if (PermissionUtils.equalsPermission(str, "android.permission.READ_MEDIA_VISUAL_USER_SELECTED")) {
                return true;
            }
            if (PermissionUtils.equalsPermission(str, "android.permission.POST_NOTIFICATIONS")) {
                return super.isGrantedPermission(context, str);
            }
            if (PermissionUtils.equalsPermission(str, "android.permission.NEARBY_WIFI_DEVICES")) {
                return PermissionUtils.checkSelfPermission(context, "android.permission.ACCESS_FINE_LOCATION");
            }
            if (PermissionUtils.equalsPermission(str, "android.permission.BODY_SENSORS_BACKGROUND")) {
                return PermissionUtils.checkSelfPermission(context, "android.permission.BODY_SENSORS");
            }
            if (PermissionUtils.equalsPermission(str, "android.permission.READ_MEDIA_IMAGES") || PermissionUtils.equalsPermission(str, "android.permission.READ_MEDIA_VIDEO") || PermissionUtils.equalsPermission(str, "android.permission.READ_MEDIA_AUDIO")) {
                return PermissionUtils.checkSelfPermission(context, "android.permission.READ_EXTERNAL_STORAGE");
            }
            if (PermissionUtils.equalsPermission(str, "android.permission.BLUETOOTH_SCAN")) {
                return PermissionUtils.checkSelfPermission(context, "android.permission.ACCESS_FINE_LOCATION");
            }
            if (PermissionUtils.equalsPermission(str, "android.permission.BLUETOOTH_CONNECT") || PermissionUtils.equalsPermission(str, "android.permission.BLUETOOTH_ADVERTISE")) {
                return true;
            }
            if (PermissionUtils.equalsPermission(str, "android.permission.MANAGE_EXTERNAL_STORAGE")) {
                return PermissionUtils.checkSelfPermission(context, "android.permission.READ_EXTERNAL_STORAGE") && PermissionUtils.checkSelfPermission(context, "android.permission.WRITE_EXTERNAL_STORAGE");
            }
            if (PermissionUtils.equalsPermission(str, "android.permission.ACCESS_BACKGROUND_LOCATION")) {
                return PermissionUtils.checkSelfPermission(context, "android.permission.ACCESS_FINE_LOCATION");
            }
            if (PermissionUtils.equalsPermission(str, "android.permission.ACTIVITY_RECOGNITION")) {
                return true;
            }
            if (PermissionUtils.equalsPermission(str, "android.permission.ACCESS_MEDIA_LOCATION")) {
                return PermissionUtils.checkSelfPermission(context, "android.permission.READ_EXTERNAL_STORAGE");
            }
            if (PermissionUtils.equalsPermission(str, "android.permission.ACCEPT_HANDOVER") || PermissionUtils.equalsPermission(str, "android.permission.ANSWER_PHONE_CALLS")) {
                return true;
            }
            if (PermissionUtils.equalsPermission(str, "android.permission.READ_PHONE_NUMBERS")) {
                return PermissionUtils.checkSelfPermission(context, "android.permission.READ_PHONE_STATE");
            }
        }
        if (PermissionUtils.equalsPermission(str, "com.android.permission.GET_INSTALLED_APPS") || PermissionUtils.equalsPermission(str, "android.permission.POST_NOTIFICATIONS")) {
            return super.isGrantedPermission(context, str);
        }
        if (Permission.isSpecialPermission(str)) {
            if (PermissionUtils.equalsPermission(str, "android.permission.WRITE_SETTINGS")) {
                return isGrantedSettingPermission(context);
            }
            if (PermissionUtils.equalsPermission(str, "android.permission.ACCESS_NOTIFICATION_POLICY")) {
                return isGrantedNotDisturbPermission(context);
            }
            if (PermissionUtils.equalsPermission(str, "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS")) {
                return isGrantedIgnoreBatteryPermission(context);
            }
            return super.isGrantedPermission(context, str);
        }
        return PermissionUtils.checkSelfPermission(context, str);
    }

    public boolean isDoNotAskAgainPermission(Activity activity, String str) {
        if (Permission.getPermissionFromAndroidVersion(str) > AndroidVersion.getAndroidVersionCode()) {
            if (PermissionUtils.equalsPermission(str, "android.permission.READ_MEDIA_VISUAL_USER_SELECTED")) {
                return false;
            }
            if (PermissionUtils.equalsPermission(str, "android.permission.POST_NOTIFICATIONS")) {
                return super.isDoNotAskAgainPermission(activity, str);
            }
            if (PermissionUtils.equalsPermission(str, "android.permission.NEARBY_WIFI_DEVICES")) {
                return (PermissionUtils.checkSelfPermission(activity, "android.permission.ACCESS_FINE_LOCATION") || PermissionUtils.shouldShowRequestPermissionRationale(activity, "android.permission.ACCESS_FINE_LOCATION")) ? false : true;
            }
            if (PermissionUtils.equalsPermission(str, "android.permission.BODY_SENSORS_BACKGROUND")) {
                return (PermissionUtils.checkSelfPermission(activity, "android.permission.BODY_SENSORS") || PermissionUtils.shouldShowRequestPermissionRationale(activity, "android.permission.BODY_SENSORS")) ? false : true;
            }
            if (PermissionUtils.equalsPermission(str, "android.permission.READ_MEDIA_IMAGES") || PermissionUtils.equalsPermission(str, "android.permission.READ_MEDIA_VIDEO") || PermissionUtils.equalsPermission(str, "android.permission.READ_MEDIA_AUDIO")) {
                return (PermissionUtils.checkSelfPermission(activity, "android.permission.READ_EXTERNAL_STORAGE") || PermissionUtils.shouldShowRequestPermissionRationale(activity, "android.permission.READ_EXTERNAL_STORAGE")) ? false : true;
            }
            if (PermissionUtils.equalsPermission(str, "android.permission.BLUETOOTH_SCAN")) {
                return (PermissionUtils.checkSelfPermission(activity, "android.permission.ACCESS_FINE_LOCATION") || PermissionUtils.shouldShowRequestPermissionRationale(activity, "android.permission.ACCESS_FINE_LOCATION")) ? false : true;
            }
            if (PermissionUtils.equalsPermission(str, "android.permission.BLUETOOTH_CONNECT") || PermissionUtils.equalsPermission(str, "android.permission.BLUETOOTH_ADVERTISE")) {
                return false;
            }
            if (PermissionUtils.equalsPermission(str, "android.permission.ACCESS_BACKGROUND_LOCATION")) {
                return (PermissionUtils.checkSelfPermission(activity, "android.permission.ACCESS_FINE_LOCATION") || PermissionUtils.shouldShowRequestPermissionRationale(activity, "android.permission.ACCESS_FINE_LOCATION")) ? false : true;
            }
            if (PermissionUtils.equalsPermission(str, "android.permission.ACTIVITY_RECOGNITION")) {
                return false;
            }
            if (PermissionUtils.equalsPermission(str, "android.permission.ACCESS_MEDIA_LOCATION")) {
                return (PermissionUtils.checkSelfPermission(activity, "android.permission.READ_EXTERNAL_STORAGE") || PermissionUtils.shouldShowRequestPermissionRationale(activity, "android.permission.READ_EXTERNAL_STORAGE")) ? false : true;
            }
            if (PermissionUtils.equalsPermission(str, "android.permission.ACCEPT_HANDOVER") || PermissionUtils.equalsPermission(str, "android.permission.ANSWER_PHONE_CALLS")) {
                return false;
            }
            if (PermissionUtils.equalsPermission(str, "android.permission.READ_PHONE_NUMBERS")) {
                return (PermissionUtils.checkSelfPermission(activity, "android.permission.READ_PHONE_STATE") || PermissionUtils.shouldShowRequestPermissionRationale(activity, "android.permission.READ_PHONE_STATE")) ? false : true;
            }
        }
        if (PermissionUtils.equalsPermission(str, "com.android.permission.GET_INSTALLED_APPS") || PermissionUtils.equalsPermission(str, "android.permission.POST_NOTIFICATIONS")) {
            return super.isDoNotAskAgainPermission(activity, str);
        }
        if (Permission.isSpecialPermission(str)) {
            return false;
        }
        return (PermissionUtils.checkSelfPermission(activity, str) || PermissionUtils.shouldShowRequestPermissionRationale(activity, str)) ? false : true;
    }

    public Intent getPermissionIntent(Context context, String str) {
        if (PermissionUtils.equalsPermission(str, "android.permission.WRITE_SETTINGS")) {
            return getSettingPermissionIntent(context);
        }
        if (PermissionUtils.equalsPermission(str, "android.permission.ACCESS_NOTIFICATION_POLICY")) {
            return getNotDisturbPermissionIntent(context);
        }
        if (PermissionUtils.equalsPermission(str, "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS")) {
            return getIgnoreBatteryPermissionIntent(context);
        }
        return super.getPermissionIntent(context, str);
    }

    private static boolean isGrantedSettingPermission(Context context) {
        if (AndroidVersion.isAndroid6()) {
            return Settings.System.canWrite(context);
        }
        return true;
    }

    private static Intent getSettingPermissionIntent(Context context) {
        Intent intent = new Intent("android.settings.action.MANAGE_WRITE_SETTINGS");
        intent.setData(PermissionUtils.getPackageNameUri(context));
        return !PermissionUtils.areActivityIntent(context, intent) ? PermissionIntentManager.getApplicationDetailsIntent(context) : intent;
    }

    private static boolean isGrantedNotDisturbPermission(Context context) {
        return ((NotificationManager) context.getSystemService(NotificationManager.class)).isNotificationPolicyAccessGranted();
    }

    private static Intent getNotDisturbPermissionIntent(Context context) {
        Intent intent;
        if (AndroidVersion.isAndroid10()) {
            intent = new Intent("android.settings.NOTIFICATION_POLICY_ACCESS_DETAIL_SETTINGS");
            intent.setData(PermissionUtils.getPackageNameUri(context));
            if (PhoneRomUtils.isHarmonyOs() || PhoneRomUtils.isMagicOs()) {
                intent = new Intent("android.settings.NOTIFICATION_POLICY_ACCESS_SETTINGS");
            }
        } else {
            intent = new Intent("android.settings.NOTIFICATION_POLICY_ACCESS_SETTINGS");
        }
        return !PermissionUtils.areActivityIntent(context, intent) ? PermissionIntentManager.getApplicationDetailsIntent(context) : intent;
    }

    private static boolean isGrantedIgnoreBatteryPermission(Context context) {
        return ((PowerManager) context.getSystemService(PowerManager.class)).isIgnoringBatteryOptimizations(context.getPackageName());
    }

    private static Intent getIgnoreBatteryPermissionIntent(Context context) {
        Intent intent = new Intent("android.settings.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS");
        intent.setData(PermissionUtils.getPackageNameUri(context));
        if (!PermissionUtils.areActivityIntent(context, intent)) {
            intent = new Intent("android.settings.IGNORE_BATTERY_OPTIMIZATION_SETTINGS");
        }
        return !PermissionUtils.areActivityIntent(context, intent) ? PermissionIntentManager.getApplicationDetailsIntent(context) : intent;
    }
}