Android開發之權限調用

自己在開發過程中遇到了兩個權限方面的巨坑,第一個是攝像頭權限的調取第二個是存儲權限;第一個倒還好,提示信息比較明確,第二個存儲權限的Error提示巨坑,提示找不到相應路徑,剛開始還以爲自己路徑拿錯了,一直修改自己獲取圖片路徑的方式.....

Android6.0從版本開始有一個很噁心人的改動,那就是動態權限,稍不注意就會掉到坑裏去。

在Android6.0以前,只需要在清單配置文件添加相應權限就可以調用了,但是如果是在Android6.0設備上,需要去動態添加相應權限。

進行版本號判斷

// 版本判斷。當手機系統大於 23 時,纔有必要去判斷權限是否獲取
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

    // 檢查該權限是否已經獲取
    int i = ContextCompat.checkSelfPermission(this, permissions[0]);
    // 權限是否已經 授權 GRANTED---授權  DINIED---拒絕
    if (i != PackageManager.PERMISSION_GRANTED) {
        // 如果沒有授予該權限,就去提示用戶請求
        showDialogTipUserRequestPermission();
    }
private void showDialogTipUserRequestPermission() {
    // 提示用戶該請求權限的彈出框

    new AlertDialog.Builder(this)
            .setTitle("存儲權限不可用")
            .setMessage("本應用需要獲取存儲空間,爲你存儲個人信息;\n否則,您將無法正常使用")
            .setPositiveButton("立即開啓", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    startRequestPermission();
                }
            })
            .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    finish();
                }
            }).setCancelable(false).show();
}

// 開始提交請求權限
private void startRequestPermission() {
    ActivityCompat.requestPermissions(this, permissions, 321);
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章