動態申請權限工具類

看了看之前貼出來的沒有動態申請權限的工具類,現在補上,裏面的權限改一改適合自己公司即可。

public class Authority {

    private static final int MY_PERMISSION_REQUEST_CODE = 10000;
    //申請的權限,字符串模式
    public static final String CALL_PHONE = Manifest.permission.CALL_PHONE;//打電話權限
    public static final String CAMERA = Manifest.permission.CAMERA;//相機攝像頭權限
    public static final String READ_EXTERNAL_STORAGE = Manifest.permission.READ_EXTERNAL_STORAGE;//讀取內存卡權限
    public static final String WRITE_EXTERNAL_STORAGE = Manifest.permission.WRITE_EXTERNAL_STORAGE;//寫入內存卡權限

    //申請的權限,數組模式
    public static final String[] CALL_PHONE_ARR = {Manifest.permission.CALL_PHONE};//打電話權限
    public static final String[] CAMERA_ARR = {Manifest.permission.CAMERA};//相機攝像頭權限
    public static final String[] READ_EXTERNAL_STORAGE_ARR = {Manifest.permission.READ_EXTERNAL_STORAGE};//讀取內存卡權限
    public static final String[] WRITE_EXTERNAL_STORAGE_ARR = {Manifest.permission.WRITE_EXTERNAL_STORAGE};//寫入內存卡權限

    //權限數組
    public static final String[] str = {
            Manifest.permission.CALL_PHONE,//打電話
            Manifest.permission.CAMERA, //相機
//            Manifest.permission.ACCESS_NETWORK_STATE,//網絡
//            Manifest.permission.ACCESS_WIFI_STATE,//wifi
//            Manifest.permission.CHANGE_WIFI_STATE,//wifi
//            Manifest.permission.INTERNET,//網絡
            Manifest.permission.READ_EXTERNAL_STORAGE,//獲取sd
            Manifest.permission.WRITE_EXTERNAL_STORAGE//寫入sd
    };

    //申請權限,多項申請(Activity)
    public static void CallMobile(Activity mContext) {
        ActivityCompat.requestPermissions(
                mContext,
                str,
                MY_PERMISSION_REQUEST_CODE//回調的標識
        );
    }

    //申請權限,單項權限,(Activity)
    public static void CallMobileArr(Activity mContext, String[] str) {
        ActivityCompat.requestPermissions(
                mContext,
                str,
                MY_PERMISSION_REQUEST_CODE//回調的標識
        );
    }

    //申請權限(fragment)
    //  requestPermissions(Authority.CAMERA_ARR, 10000);這種模式,不可以顯示申請權限彈框.如果禁止所申請的權限,可以顯示自定義彈框
    //下面這種模式:可以顯示申請權限彈框.如果禁止所申請的權限,並且“下次不會再次提醒”已勾選,不會顯示彈框
    @TargetApi(Build.VERSION_CODES.M)
    public static void CallMobileFragment(Activity mContext, String[] str) {
        mContext.requestPermissions(str, MY_PERMISSION_REQUEST_CODE);
    }


    //判斷權限是否申請通過
    public static boolean lacksPermission(Context mContexts, String permission) {
        return ContextCompat.checkSelfPermission(mContexts, permission) ==
                PackageManager.PERMISSION_DENIED;
    }


    /**
     * @param s                  提示語
     * @param applicationContext 上下文
     * @param type               類型,是否關閉頁面 1關閉,0不關閉
     */
    public static void openAppDetails(String s, final Activity applicationContext, final int type) {
        final android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(applicationContext);
        builder.setMessage(s);
        builder.setCancelable(false);
        builder.setPositiveButton("去手動授權", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Intent intent = new Intent();
                intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
                intent.addCategory(Intent.CATEGORY_DEFAULT);
                intent.setData(Uri.parse("package:" + applicationContext.getPackageName()));
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
                intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
                applicationContext.startActivity(intent);
                if (type == 1) {
                    applicationContext.finish();
                }

            }
        });
        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
                if (type == 1) {
                    applicationContext.finish();
                }
            }
        });
        builder.show();
    }

    //設置popu背景色
    public static void setBackgroundAlpha(float bgAlpha, Activity mContext) {
        WindowManager.LayoutParams lp = mContext.getWindow()
                .getAttributes();
        lp.alpha = bgAlpha;
        mContext.getWindow().setAttributes(lp);
    }
}
 

發佈了58 篇原創文章 · 獲贊 6 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章