EasyPermissions的流程簡(jiǎn)介和記錄

package com.example.administrator.myeasypermissions;
import android.Manifest;import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;import android.view.View;
import android.widget.TextView;import android.widget.Toast;
import java.util.List;
import pub.devrel.easypermissions.AfterPermissionGranted;
import pub.devrel.easypermissions.AppSettingsDialog;
import pub.devrel.easypermissions.EasyPermissions;

public class Main3Activity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks {    

private static final int CALL_PHONE = 0x01;   

 @Override   
 protected void onCreate(@Nullable Bundle savedInstanceState) {
               super.onCreate(savedInstanceState);
               setContentView(R.layout.test_activity);        
               TextView mTvCallPhone = (TextView) findViewById(R.id.tv_contacts);
               mTvCallPhone.setOnClickListener(new View.OnClickListener() {
                  @Override
                  public void onClick(View view) {
                      requestCallPhonePermission();
                  } 
             });
    }

    @AfterPermissionGranted(CALL_PHONE)
    public void requestCallPhonePermission() {
        String[] perms = {Manifest.permission.CALL_PHONE};
        if (EasyPermissions.hasPermissions(this, perms)) {
//            call();
        } else {
            EasyPermissions.requestPermissions(this, "xxx請(qǐng)求撥打電話權(quán)限蹬竖!", CALL_PHONE, perms);
        }
    }

    @Override
    public void onPermissionsGranted(int requestCode, List perms) {//權(quán)限同意        Toast.makeText(this, "你允許了本權(quán)限", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onPermissionsDenied(int requestCode, List perms) {//權(quán)限拒絕
        if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {
            new AppSettingsDialog.Builder(this, "為了您能使用電話功能林艘,請(qǐng)開啟打電話權(quán)限灰伟!").setTitle("提示").setPositiveButton("去設(shè)置").setNegativeButton("取消", null).setRequestCode(CALL_PHONE).build().show();
        }else{
            Toast.makeText(this, "你拒絕了本權(quán)限呆奕,將無法使用部分功能", Toast.LENGTH_SHORT).show();
        }
    }

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

觸發(fā)點(diǎn)擊事件峰尝,先調(diào)用
EasyPermissions.requestPermissions(this,"xxx請(qǐng)求撥打電話權(quán)限偏窝!",CALL_PHONE,perms);
后武学,EasyPermissions會(huì)去向系統(tǒng)請(qǐng)求相應(yīng)的權(quán)限祭往,第一次請(qǐng)求,系統(tǒng)會(huì)彈出警告框:

不論點(diǎn)擊哪個(gè)選項(xiàng)火窒,均會(huì)走Activity的方法
onRequestPermissionsResult(intrequestCode,@NonNullString[] permissions,@NonNullint[] grantResults)硼补,
然后轉(zhuǎn)交給
EasyPermissions.onRequestPermissionsResult(requestCode,permissions,grantResults,this);

如果選擇的是允許,則會(huì)走Activity的
onPermissionsGranted(intrequestCode,Listperms);
方法熏矿,表示用戶允許相應(yīng)權(quán)限已骇,然后就可以做后續(xù)的操作;
如果選擇的是拒絕票编,則走
onPermissionsDenied(intrequestCode,Listperms);
方法褪储,表示用戶拒絕相應(yīng)權(quán)限,
EasyPermissions.somePermissionPermanentlyDenied(this,perms);
方法表示這個(gè)權(quán)限是否被“不再提醒”了(就是把那個(gè)小勾勾點(diǎn)上了慧域,這個(gè)東西鲤竹,只會(huì)在第一次拒絕后,再申請(qǐng)權(quán)限的時(shí)候出現(xiàn))昔榴,所以此時(shí)是走else的辛藻;
如果第一次已經(jīng)拒絕了對(duì)應(yīng)權(quán)限碘橘,則第二次申請(qǐng)權(quán)限時(shí)(因?yàn)榇藭r(shí)還沒有選過“不再提醒”),會(huì)彈出EasyPermissions定義的提醒框吱肌,見圖:

點(diǎn)擊取消:走Activity的
onPermissionsDenied(intrequestCode,Listperms)痘拆;
點(diǎn)擊確定:彈出對(duì)話框:

點(diǎn)擊拒絕(不點(diǎn)勾勾):走Activity的
onRequestPermissionsResult(intrequestCode,@NonNullString[] permissions,@NonNullint[] grantResults);
再走
onPermissionsDenied(intrequestCode,Listperms)
點(diǎn)擊拒絕(點(diǎn)勾勾):走Activity的
onRequestPermissionsResult(intrequestCode,@NonNullString[] permissions,@NonNullint[] grantResults);
再走onPermissionsDenied(intrequestCode,Listperms)氮墨;
此時(shí)
EasyPermissions.somePermissionPermanentlyDenied(this,perms)错负;
會(huì)生效,走其中的語句:
newAppSettingsDialog.Builder(this,"為了您能使用電話功能勇边,請(qǐng)開啟打電話權(quán)限犹撒!").setTitle("提示").setPositiveButton("去設(shè)置").setNegativeButton("取消",null).setRequestCode(CALL_PHONE).build().show();
彈出EasyPermissions的對(duì)話框:

點(diǎn)取消:代表取消申請(qǐng)了;
點(diǎn)去設(shè)置:跳到系統(tǒng)的app設(shè)置中

在這用戶手動(dòng)設(shè)置權(quán)限就可以了粒褒;
如果前面的申請(qǐng)都拒絕了识颊,只要沒有選過小勾勾,則走的流程都和第二次申請(qǐng)的流程一樣奕坟;
如果前面的申請(qǐng)都拒絕了祥款,只要有選過小勾勾,則流程也和第二次申請(qǐng)的流程類似月杉,只是會(huì)少了刃跛,第一個(gè)彈框,即只會(huì)沒有下面這個(gè)彈框(推測(cè)是EasyPermissions做了判斷苛萎,如果沒有勾選“不再提醒”則彈框桨昙,否則不彈框),后續(xù)步驟一樣:


看完這篇腌歉,還不是很清楚的蛙酪,可以看我另一片文章,里面的代碼可以直接復(fù)制來用
EasyPermissions的流程翘盖,更加詳細(xì)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末桂塞,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子馍驯,更是在濱河造成了極大的恐慌阁危,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件汰瘫,死亡現(xiàn)場(chǎng)離奇詭異狂打,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)吟吝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門菱父,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事浙宜」倭桑” “怎么了?”我有些...
    開封第一講書人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵粟瞬,是天一觀的道長(zhǎng)同仆。 經(jīng)常有香客問我,道長(zhǎng)裙品,這世上最難降的妖魔是什么俗批? 我笑而不...
    開封第一講書人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮市怎,結(jié)果婚禮上岁忘,老公的妹妹穿的比我還像新娘。我一直安慰自己区匠,他們只是感情好干像,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著驰弄,像睡著了一般麻汰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上戚篙,一...
    開封第一講書人閱讀 50,096評(píng)論 1 291
  • 那天五鲫,我揣著相機(jī)與錄音,去河邊找鬼岔擂。 笑死位喂,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的智亮。 我是一名探鬼主播忆某,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼点待,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼阔蛉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起癞埠,我...
    開封第一講書人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤状原,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后苗踪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體颠区,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年通铲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了毕莱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖朋截,靈堂內(nèi)的尸體忽然破棺而出蛹稍,到底是詐尸還是另有隱情,我是刑警寧澤部服,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布唆姐,位于F島的核電站,受9級(jí)特大地震影響廓八,放射性物質(zhì)發(fā)生泄漏奉芦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一剧蹂、第九天 我趴在偏房一處隱蔽的房頂上張望声功。 院中可真熱鬧,春花似錦宠叼、人聲如沸减噪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽筹裕。三九已至,卻和暖如春窄驹,著一層夾襖步出監(jiān)牢的瞬間朝卒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工乐埠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留抗斤,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓丈咐,卻偏偏與公主長(zhǎng)得像瑞眼,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子棵逊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

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