Android 動(dòng)態(tài)權(quán)限申請的封裝

此模塊基于AndPermission進(jìn)行二次封裝

為AndPermission加入依賴

implementation 'com.yanzhenjie:permission:2.0.3' //添加依賴

工具類

public class CheckPermission {

    private  Context context;
    private static CheckPermission checkPermission;
    private static final String PACKAGE_HEADER = "package:";


    public  CheckPermission(Context context) {
        this.context = context;
    }

    /**
     * 獲取權(quán)限
     *
     * @param listener
     * @param permission
     */
    @SuppressLint("WrongConstant")
    public void requestPermission(String [] permission,final PermissionLinstener listener) {
        AndPermission.with(context)
                    .runtime()
                    .permission(permission)
//                    .rationale(context)//添加拒絕權(quán)限回調(diào)
                    .onGranted(new Action<List<String>>() {
                        @Override
                        public void onAction(List<String> data) {
                            // data.get(0);
                            Log.d("permission", data.get(0));
                            listener.onSuccess(context,data);
                        }
                    })
                    .onDenied(new Action<List<String>>() {
                        @Override
                        public void onAction(List<String> data) {
                            /**
                             * 當(dāng)用戶沒有允許該權(quán)限時(shí),回調(diào)該方法
                             */
                            listener.onFailed(context,data);
                            /**
                             * 判斷用戶是否點(diǎn)擊了禁止后不再詢問,AndPermission.hasAlwaysDeniedPermission(MainActivity.this, data)
                             * 如要引導(dǎo)用戶跳轉(zhuǎn)至應(yīng)該權(quán)限設(shè)置頁面,可用intent
                             */
                            if (AndPermission.hasAlwaysDeniedPermission(context, data)) {
                                //true,彈窗再次向用戶索取權(quán)限
                                listener.onNotApply(context,data);
                            }
                        }
                    }).start();
    }

    /**
     * 引導(dǎo)用戶到系統(tǒng)設(shè)置頁面
     */
    public void GuidePermission(){
        Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
        intent.setData(Uri.parse(PACKAGE_HEADER + context.getPackageName()));
        context.startActivity(intent);

    }

    public interface PermissionLinstener {
        void onSuccess(Context context,List<String> data);
        void onFailed(Context context,List<String> data);
        void onNotApply(Context context,List<String> data);
    }

}

使用案例

final String [] strings = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE};

new CheckPermission(context).requestPermission(strings, new CheckPermission.PermissionLinstener() {
                    @Override
                    public void onSuccess(Context context, List<String> data) {
                        Toast.makeText(context, "申請成功", Toast.LENGTH_SHORT).show();

                    }

                    @Override
                    public void onFailed(Context context, List<String> data) {
                        Toast.makeText(context, "申請失敗", Toast.LENGTH_SHORT).show();

                    }
                    /**
                     *  可在此調(diào)用,GuidePermission();引導(dǎo)用戶前往系統(tǒng)設(shè)置頁面獲取權(quán)限
                     * @param context
                     * @param data
                     */
                    @Override
                    public void onNotApply(final Context context, List<String> data) {
                                            Toast.makeText(context, "用戶點(diǎn)擊了不再提示", Toast.LENGTH_SHORT).show();

                    }
                });


不要忘了在清單中,加入注冊權(quán)限

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

CSDN地址:Android 動(dòng)態(tài)權(quán)限申請的封裝

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容