导航菜单

页面标题

页面副标题

КЛ£ v1.0.0 - PermissionActivity.java 源代码

正在查看: КЛ£ v1.0.0 应用的 PermissionActivity.java JAVA 源代码文件

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


package com.bjz.comm.net.premission;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import com.bjz.comm.net.BuildConfig;
import com.bjz.comm.net.BuildVars;
import com.bjz.comm.net.HttpConstant;
import com.bjz.comm.net.R;
import java.util.ArrayList;
import java.util.List;
import pub.devrel.easypermissions.AppSettingsDialog;
import pub.devrel.easypermissions.EasyPermissions;

public class PermissionActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks {
    private static final String TAG = "PermissionLog";
    private String[] permissions;
    private List<String> addTexts = new ArrayList();
    private int permissionSize = 0;
    private boolean isFirst = true;

    @SuppressLint({"HandlerLeak"})
    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (msg.what == 11) {
                PermissionActivity.this.onBackPressed();
            }
        }
    };

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (savedInstanceState != null) {
            this.permissions = savedInstanceState.getStringArray("permissions");
        }
        initPermission(getIntent());
    }

    private void initPermission(Intent intent) {
        if (this.permissions == null) {
            this.permissions = intent.getStringArrayExtra("permissions");
        }
        EasyPermissions.requestPermissions(this, getCurPermission(), 10, this.permissions);
    }

    protected void onResume() {
        super.onResume();
        if (BuildVars.DEBUG_VERSION) {
            Log.e(TAG, getClass().getSimpleName() + " ===> onResume");
        }
    }

    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        initPermission(intent);
    }

    @SuppressLint({"StringFormatInvalid"})
    private String getCurPermission() {
        this.addTexts.clear();
        this.permissionSize = 0;
        StringBuilder builder = new StringBuilder();
        for (String value : this.permissions) {
            String per = getPermission(value);
            if (!this.addTexts.contains(per)) {
                this.addTexts.add(per);
                builder.append(per);
                builder.append("-");
                this.permissionSize++;
            }
        }
        builder.delete(builder.length() - 1, builder.length());
        return String.format(getString(R.string.need_permission), builder.toString());
    }

    @SuppressLint({"StringFormatInvalid"})
    private String getListPermission(List<String> perms) {
        this.addTexts.clear();
        StringBuilder builder = new StringBuilder();
        for (String value : perms) {
            String per = getPermission(value);
            if (!this.addTexts.contains(per)) {
                this.addTexts.add(per);
                builder.append(per);
                builder.append("-");
            }
        }
        builder.delete(builder.length() - 1, builder.length());
        return String.format(getString(R.string.need_permission), builder.toString());
    }

    private String getPermission(String permission) {
        char c;
        switch (permission.hashCode()) {
            case -2062386608:
                if (permission.equals(PermissionUtils.SMS)) {
                    c = 19;
                    break;
                }
                c = 65535;
                break;
            case -1928411001:
                if (permission.equals(PermissionUtils.CALENDAR)) {
                    c = '\n';
                    break;
                }
                c = 65535;
                break;
            case -1921431796:
                if (permission.equals("android.permission.READ_CALL_LOG")) {
                    c = 3;
                    break;
                }
                c = 65535;
                break;
            case -1888586689:
                if (permission.equals(PermissionUtils.FINE_LOCATION)) {
                    c = 14;
                    break;
                }
                c = 65535;
                break;
            case -1479758289:
                if (permission.equals("android.permission.RECEIVE_WAP_PUSH")) {
                    c = 20;
                    break;
                }
                c = 65535;
                break;
            case -1238066820:
                if (permission.equals(PermissionUtils.BODY_SENSORS)) {
                    c = '\r';
                    break;
                }
                c = 65535;
                break;
            case -895679497:
                if (permission.equals("android.permission.RECEIVE_MMS")) {
                    c = 21;
                    break;
                }
                c = 65535;
                break;
            case -895673731:
                if (permission.equals("android.permission.RECEIVE_SMS")) {
                    c = 22;
                    break;
                }
                c = 65535;
                break;
            case -406040016:
                if (permission.equals("android.permission.READ_EXTERNAL_STORAGE")) {
                    c = 16;
                    break;
                }
                c = 65535;
                break;
            case -63024214:
                if (permission.equals("android.permission.ACCESS_COARSE_LOCATION")) {
                    c = 15;
                    break;
                }
                c = 65535;
                break;
            case -5573545:
                if (permission.equals(PermissionUtils.PHONE_STATE)) {
                    c = 4;
                    break;
                }
                c = 65535;
                break;
            case 52602690:
                if (permission.equals("android.permission.SEND_SMS")) {
                    c = 23;
                    break;
                }
                c = 65535;
                break;
            case 112197485:
                if (permission.equals("android.permission.CALL_PHONE")) {
                    c = 5;
                    break;
                }
                c = 65535;
                break;
            case 214526995:
                if (permission.equals("android.permission.WRITE_CONTACTS")) {
                    c = 0;
                    break;
                }
                c = 65535;
                break;
            case 463403621:
                if (permission.equals(PermissionUtils.CAMERA)) {
                    c = '\f';
                    break;
                }
                c = 65535;
                break;
            case 603653886:
                if (permission.equals("android.permission.WRITE_CALENDAR")) {
                    c = 11;
                    break;
                }
                c = 65535;
                break;
            case 610633091:
                if (permission.equals("android.permission.WRITE_CALL_LOG")) {
                    c = 6;
                    break;
                }
                c = 65535;
                break;
            case 784519842:
                if (permission.equals("android.permission.USE_SIP")) {
                    c = 7;
                    break;
                }
                c = 65535;
                break;
            case 952819282:
                if (permission.equals("android.permission.PROCESS_OUTGOING_CALLS")) {
                    c = '\b';
                    break;
                }
                c = 65535;
                break;
            case 1271781903:
                if (permission.equals("android.permission.GET_ACCOUNTS")) {
                    c = 1;
                    break;
                }
                c = 65535;
                break;
            case 1365911975:
                if (permission.equals(PermissionUtils.EXTERNAL_STORAGE)) {
                    c = 17;
                    break;
                }
                c = 65535;
                break;
            case 1831139720:
                if (permission.equals(PermissionUtils.RECORD_AUDIO)) {
                    c = 18;
                    break;
                }
                c = 65535;
                break;
            case 1977429404:
                if (permission.equals(PermissionUtils.LINKMAIN)) {
                    c = 2;
                    break;
                }
                c = 65535;
                break;
            case 2133799037:
                if (permission.equals("com.android.voicemail.permission.ADD_VOICEMAIL")) {
                    c = '\t';
                    break;
                }
                c = 65535;
                break;
            default:
                c = 65535;
                break;
        }
        switch (c) {
            case 0:
            case BuildConfig.VERSION_CODE:
            case 2:
                String value = getString(R.string.linkman);
                return value;
            case 3:
            case 4:
            case 5:
            case 6:
            case 7:
            case '\b':
            case '\t':
                String value2 = getString(R.string.call_phone);
                return value2;
            case HttpConstant.HTTP_REQUEST_PAGE_SIZE_10:
            case 11:
                String value3 = getString(R.string.calendar);
                return value3;
            case '\f':
                String value4 = getString(R.string.camera);
                return value4;
            case '\r':
                String value5 = getString(R.string.sensors);
                return value5;
            case 14:
            case 15:
                String value6 = getString(R.string.location);
                return value6;
            case 16:
            case 17:
                String value7 = getString(R.string.storage);
                return value7;
            case 18:
                String value8 = getString(R.string.record);
                return value8;
            case 19:
            case HttpConstant.HTTP_REQUEST_PAGE_SIZE:
            case 21:
            case 22:
            case 23:
                String value9 = getString(R.string.get_phone_info);
                return value9;
            default:
                return "";
        }
    }

    protected void onSaveInstanceState(@NonNull Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putStringArray("permissions", this.permissions);
    }

    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, new Object[]{this});
    }

    public void onPermissionsGranted(int requestCode, @NonNull List<String> perms) {
        if (BuildVars.DEBUG_VERSION) {
            Log.e(TAG, getClass().getSimpleName() + " ===> onPermissionsGranted-成功" + perms.toString());
        }
        if (this.permissions.length == perms.size()) {
            PermissionManager.getInstance(this).requestPermissionSuccess();
            onBackPressed();
        } else {
            this.handler.sendEmptyMessageDelayed(11, 500L);
        }
    }

    public void onPermissionsDenied(int requestCode, @NonNull List<String> perms) {
        if (BuildVars.DEBUG_VERSION) {
            Log.e(TAG, getClass().getSimpleName() + " ===> onPermissionsDenied-失败" + perms.toString());
        }
        if (EasyPermissions.somePermissionPermanentlyDenied(this, perms) && this.isFirst) {
            this.isFirst = false;
            new AppSettingsDialog.Builder(this).setRationale(String.format(getString(R.string.permission_message), getListPermission(perms))).setPositiveButton(getString(R.string.insure)).setNegativeButton(getString(R.string.quit)).build().show();
        }
        PermissionManager.getInstance(this).requestPermissionFail();
        this.handler.removeCallbacksAndMessages(null);
        onBackPressed();
    }

    protected void onDestroy() {
        super.onDestroy();
        if (BuildVars.DEBUG_VERSION) {
            Log.e(TAG, getClass().getSimpleName() + " ===> onDestroy");
        }
    }
}