root版权限申请工具类

一个权限申请管理类,可自动获取所需权限,支持其它应用,需要root设备支持。

主要功能如下:

支持运行时权限申请
支持高级权限申请,包括悬浮窗,修改设置,查看应用使用情况以及截屏等。
支持激活设备管理器
支持开启无障碍
支持激活设备所有者
支持修改系统安全设置和修改系统全局设置
判断某个应用的某项权限是否已获取
可得知权限申请是否成功

 

    /**
     * 主线程异步请求权限
     */
    private void requestPermissions() {

        final ProgressDialog mDialog = new ProgressDialog(this);
        mDialog.setMessage("正在请求权限...");
        mDialog.setCanceledOnTouchOutside(false);
        mDialog.setCancelable(false);
        mDialog.show();

        new PermissionManager(this)
                //组建一个任务
                .buildTask(new PermissionManager.Task()
                        .setPackageName(getPackageName())
                        //允许运行时权限
                        .allow(
                                Manifest.permission.CAMERA,
                                Manifest.permission.READ_EXTERNAL_STORAGE,
                                Manifest.permission.WRITE_EXTERNAL_STORAGE)
                        //允许悬浮窗
                        .allowDrawOverlays(true)
                        //允许修改系统设置
                        .allowWriteSettings(true)
                        //允许投射屏幕
                        .allowProjectMedia(true)
                        //允许有权查看使用情况
                        .allowUsageStats(true)
                        //允许无障碍服务
                        .allowAccessibility(MyAccessibilityService.class, true)
                        //允许设备管理器
                        .allowDeviceAdmin(MyDeviceAdminReceiver.class, true)


                )
                //开启GPS服务
                .putSecure(Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "+gps")
                //开启wifi
                .putGlobal(Settings.Global.WIFI_ON, 1)
                //回调,用于接收执行结果, handler要放在主线程
                .setCallbacks(new PermissionManager.Callbacks() {
                    @Override
                    public void onSuccess(List<PermissionManager.Task> tasks, PermissionManager.Sets sets, boolean isAllSuccessful) {
                        if (mDialog != null) mDialog.cancel();
                        Toast.makeText(MainActivity.this, "命令执行完成", Toast.LENGTH_SHORT).show();

                        PermissionManager.Task task = tasks.get(0);
                        Log.e(TAG, "isAllSuccessful: " + isAllSuccessful + "\n"
                                + "isSuccessful: " + task.isSuccessful() + "\n"
                                + "isAllowPermissionSuccessful: " + task.isAllowPermissionSuccessful() + "\n"
                                + "isAllowOpSuccessful: " + task.isAllowOpSuccessful() + "\n"
                                + "isAccessibilitySuccessful: " + task.isAccessibilitySuccessful() + "\n"
                                + "isDeviceAdminSuccessful: " + task.isDeviceAdminSuccessful() + "\n"
                        );

                        if (sets.getSecureSetResult().get(Settings.Secure.LOCATION_PROVIDERS_ALLOWED) == Boolean.TRUE) {
                            Log.e(TAG, "open gps success");
                        } else {
                            Log.e(TAG, "open gps failure");
                        }
                        if (sets.getGlobalSetResult().get(Settings.Global.WIFI_ON) == Boolean.TRUE) {
                            Log.e(TAG, "open wifi success");
                        } else {
                            Log.e(TAG, "open wifi failure");
                        }
                    }

                    @Override
                    public void onFailure(List<PermissionManager.Task> tasks, PermissionManager.Sets sets) {
                        if (mDialog != null) mDialog.cancel();
                        Toast.makeText(MainActivity.this, "命令执行失败,设备可能没有root权限", Toast.LENGTH_SHORT).show();
                    }
                }, new Handler())
                .start();


    }


    /**
     * 同步请求权限
     */
    private void syncRequestPermissions() {
        final PermissionManager pm = new PermissionManager(this);

        //同步执行可能会影响ui,建议放在子线程执行
        PermissionManager.Result result = pm.buildTask(new PermissionManager.Task()
                .setPackageName(getPackageName())
                //允许运行时权限
                .allow(
                        Manifest.permission.CAMERA,
                        Manifest.permission.READ_EXTERNAL_STORAGE,
                        Manifest.permission.WRITE_EXTERNAL_STORAGE)
                //允许悬浮窗
                .allowDrawOverlays(true)

        ).execute();

        //执行结果
        if (result.isExecuteSuccess()) {
            PermissionManager.Task task = result.getTasks().get(0);

            Log.e(TAG, "isAllSuccessful: " + result.isAllSuccessful() + "\n"
                    + "isSuccessful: " + task.isSuccessful() + "\n"
                    + "isAllowPermissionSuccessful: " + task.isAllowPermissionSuccessful() + "\n"
                    + "isAllowOpSuccessful: " + task.isAllowOpSuccessful() + "\n"
            );

            //Toast.makeText(MainActivity.this, "成功", Toast.LENGTH_SHORT).show();
        } else {
            Log.e(TAG, "命令执行失败,设备可能没有root权限");
        }


    }

github地址:https://github.com/yuanfang235/app

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
K40一键root工具是一款可以帮助用户快速实现对K40手机进行root权限获取的工具。所谓root权限,意味着用户可以获取到手机系统的最高权限,从而可以对手机进行深度定制和修改。这种工具的出现,能够极大地方便那些喜欢DIY手机、自由控制手机的用户。 使用K40一键root工具,用户只需简单操作,就能够轻松获得手机的root权限。一般而言,用户需要首先下载该工具,然后连接K40手机到电脑上。接着,运行一键root工具并按照提示进行操作,几分钟后即可完成root权限获取。这个过程中,用户需要确保手机电量充足,避免因电量不足导致中断。另外,为了避免不必要的风险,建议用户在操作前备份手机的重要数据。 值得注意的是,虽然使用一键root工具可以方便快捷地获取root权限,但也不可否认其中存在一定的风险。一键root工具的使用并非官方推荐的方式,它可能会导致手机出现不稳定、卡顿、闪退等问题。而且,一旦root权限被获取,系统的安全性也会降低,手机可能更容易受到恶意软件的攻击。因此,在决定使用一键root工具前,用户应该权衡利弊,并确保自己具备一定的操作经验和风险意识。 总之,K40一键root工具可以帮助用户获得操作系统的最高权限,从而进行更深层次的定制和修改。但用户需要注意,一键root工具的使用存在一定的风险,可能导致手机稳定性和安全性方面的问题。因此,在使用之前,用户需要充分了解相关知识,并自行承担使用工具所带来的风险。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值