root版權(quán)限申請(qǐng)工具類

一個(gè)權(quán)限申請(qǐng)管理類烟号,可自動(dòng)獲取所需權(quán)限政恍,支持其它應(yīng)用迫筑,需要root設(shè)備支持脯燃。

主要功能如下:

支持運(yùn)行時(shí)權(quán)限申請(qǐng)辕棚,包括存儲(chǔ)欲主,相機(jī)等。

支持高級(jí)權(quán)限申請(qǐng)引几,包括懸浮窗伟桅,修改設(shè)置楣铁,查看應(yīng)用使用情況以及截屏等盖腕。

支持激活設(shè)備管理器

支持開啟無障礙

支持激活設(shè)備所有者

支持修改系統(tǒng)安全設(shè)置和修改系統(tǒng)全局設(shè)置

判斷某個(gè)應(yīng)用的某項(xiàng)權(quán)限是否已獲取

可得知權(quán)限申請(qǐng)是否成功


/**

    * 主線程異步請(qǐng)求權(quán)限

    */

    private void requestPermissions() {

        final ProgressDialog mDialog = new ProgressDialog(this);

        mDialog.setMessage("正在請(qǐng)求權(quán)限...");

        mDialog.setCanceledOnTouchOutside(false);

        mDialog.setCancelable(false);

        mDialog.show();

        new PermissionManager(this)

                //組建一個(gè)任務(wù)

                .buildTask(new PermissionManager.Task()

                        .setPackageName(getPackageName())

                        //允許運(yùn)行時(shí)權(quán)限

                        .allow(

                                Manifest.permission.CAMERA,

                                Manifest.permission.READ_EXTERNAL_STORAGE,

                                Manifest.permission.WRITE_EXTERNAL_STORAGE)

                        //允許懸浮窗

                        .allowDrawOverlays(true)

                        //允許修改系統(tǒng)設(shè)置

                        .allowWriteSettings(true)

                        //允許投射屏幕

                        .allowProjectMedia(true)

                        //允許有權(quán)查看使用情況

                        .allowUsageStats(true)

                        //允許無障礙服務(wù)

                        .allowAccessibility(MyAccessibilityService.class, true)

                        //允許設(shè)備管理器

                        .allowDeviceAdmin(MyDeviceAdminReceiver.class, true)

                )

                //開啟GPS服務(wù)

                .putSecure(Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "+gps")

                //開啟wifi

                .putGlobal(Settings.Global.WIFI_ON, 1)

                //回調(diào)竖哩,用于接收?qǐng)?zhí)行結(jié)果, 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, "命令執(zhí)行完成", 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, "命令執(zhí)行失敗增淹,設(shè)備可能沒有root權(quán)限", Toast.LENGTH_SHORT).show();

                    }

                }, new Handler())

                .start();

    }


    /**

    * 同步請(qǐng)求權(quán)限

    */

    private void syncRequestPermissions() {

        final PermissionManager pm = new PermissionManager(this);

        //同步執(zhí)行可能會(huì)影響ui虑润,建議放在子線程執(zhí)行

        PermissionManager.Result result = pm.buildTask(new PermissionManager.Task()

                .setPackageName(getPackageName())

                //允許運(yùn)行時(shí)權(quán)限

                .allow(

                        Manifest.permission.CAMERA,

                        Manifest.permission.READ_EXTERNAL_STORAGE,

                        Manifest.permission.WRITE_EXTERNAL_STORAGE)

                //允許懸浮窗

                .allowDrawOverlays(true)

        ).execute();

        //執(zhí)行結(jié)果

        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, "命令執(zhí)行失敗哭当,設(shè)備可能沒有root權(quán)限");

        }

    }

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市彻采,隨后出現(xiàn)的幾起案子肛响,更是在濱河造成了極大的恐慌终惑,老刑警劉巖雹有,帶你破解...
    沈念sama閱讀 216,744評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異质帅,居然都是意外死亡煤惩,警方通過查閱死者的電腦和手機(jī)魄揉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門洛退,熙熙樓的掌柜王于貴愁眉苦臉地迎上來兵怯,“玉大人,你說我怎么就攤上這事驻仅≡敕” “怎么了粘优?”我有些...
    開封第一講書人閱讀 163,105評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵丹墨,是天一觀的道長(zhǎng)贩挣。 經(jīng)常有香客問我王财,道長(zhǎng)绒净,這世上最難降的妖魔是什么挂疆? 我笑而不...
    開封第一講書人閱讀 58,242評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮胆萧,結(jié)果婚禮上盾鳞,老公的妹妹穿的比我還像新娘腾仅。我一直安慰自己推励,他們只是感情好稿黄,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評(píng)論 6 389
  • 文/花漫 我一把揭開白布族购。 她就那樣靜靜地躺著寝杖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪只盹。 梳的紋絲不亂的頭發(fā)上鹿霸,一...
    開封第一講書人閱讀 51,215評(píng)論 1 299
  • 那天屹堰,我揣著相機(jī)與錄音扯键,去河邊找鬼荣刑。 笑死厉亏,一個(gè)胖子當(dāng)著我的面吹牛爱只,可吹牛的內(nèi)容都是我干的窝趣。 我是一名探鬼主播哑舒,決...
    沈念sama閱讀 40,096評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼瞪浸!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蹈矮,我...
    開封第一講書人閱讀 38,939評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤踊东,失蹤者是張志新(化名)和其女友劉穎闸翅,沒想到半個(gè)月后济赎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體司训,經(jīng)...
    沈念sama閱讀 45,354評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡贺拣,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腕够。...
    茶點(diǎn)故事閱讀 39,745評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡甚淡,死狀恐怖资柔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情羹与,我是刑警寧澤注簿,帶...
    沈念sama閱讀 35,448評(píng)論 5 344
  • 正文 年R本政府宣布妄辩,位于F島的核電站山上,受9級(jí)特大地震影響眼耀,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜佩憾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評(píng)論 3 327
  • 文/蒙蒙 一哮伟、第九天 我趴在偏房一處隱蔽的房頂上張望干花。 院中可真熱鬧,春花似錦楞黄、人聲如沸池凄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽肿仑。三九已至,卻和暖如春碎税,著一層夾襖步出監(jiān)牢的瞬間尤慰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工雷蹂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留伟端,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,776評(píng)論 2 369
  • 正文 我出身青樓匪煌,卻偏偏與公主長(zhǎng)得像荔泳,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子虐杯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容