Android 6.0 動(dòng)態(tài)權(quán)限申請(qǐng) 項(xiàng)目步驟

1.在第一次進(jìn)入項(xiàng)目 進(jìn)行全部的危險(xiǎn)權(quán)限的申請(qǐng)

//危險(xiǎn)權(quán)限動(dòng)態(tài)請(qǐng)求 并且第一次登錄 進(jìn)行驗(yàn)證 不去處理申請(qǐng)后的操作

if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.JELLY_BEAN&&isFirst) {

//內(nèi)存卡讀寫權(quán)限 以及 相機(jī)

String[] mPermissionList = {Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};

ActivityCompat.requestPermissions(this, mPermissionList,REQUEST_STORAGE_READ_ACCESS_PERMISSION);

}

2.在需要申請(qǐng)權(quán)限的地方進(jìn)行權(quán)限判定 如果未進(jìn)行同意 進(jìn)行重復(fù)申請(qǐng) 如果是點(diǎn)擊不再提醒 并且權(quán)限拒絕 dialog提醒進(jìn)入Setting界面

//qq分享需要內(nèi)存卡權(quán)限

if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.JELLY_BEAN

&& ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)

!= PackageManager.PERMISSION_GRANTED) {

dynamicRequestPermission("QQ分享需要得到您的內(nèi)存卡存儲(chǔ)權(quán)限",

REQUEST_STORAGE_READ_ACCESS_PERMISSION, Manifest.permission.READ_EXTERNAL_STORAGE);

}else{

? ? //TODO share 2 qq

}

彈窗提醒?

private void dynamicRequestPermission(String rationale,final int requestCode,final String permission) {

if(ActivityCompat.shouldShowRequestPermissionRationale(this, permission)) {

newMaterialDialog.Builder(SharePublicLiveActivity.this)

.title(R.string.mis_permission_dialog_title)

.content(rationale)

.positiveText(R.string.mis_permission_dialog_ok)

.negativeText(R.string.mis_permission_dialog_cancel)

.onAny(newMaterialDialog.SingleButtonCallback() {

@Override

public voidonClick(@NonNullMaterialDialog dialog,@NonNullDialogAction which) {

if(which == DialogAction.NEGATIVE) {

dialog.dismiss();

}else if(which == DialogAction.POSITIVE) {

ActivityCompat.requestPermissions(SharePublicLiveActivity.this,newString[]{permission},requestCode);

}

}

})

.show();

}else{//我在首次啟動(dòng)已經(jīng)都進(jìn)項(xiàng)請(qǐng)求了 去設(shè)置界面了

goSetting();

}

}

//權(quán)限回調(diào)

@Override

public void onRequestPermissionsResult(int requestCode,@NonNull final String[] ?permissions,@NonNull int[] grantResults) {

if(requestCode ==REQUEST_STORAGE_READ_ACCESS_PERMISSION) {

if(grantResults[0] == PackageManager.PERMISSION_GRANTED) {

//TODO share 2 qq

}else{

goSetting();

}

}else{

super.onRequestPermissionsResult(requestCode, permissions, grantResults);

}

}

//進(jìn)入app設(shè)置界面

private voidgoSetting() {

newMaterialDialog.Builder(mContext)

.title("溫馨提示")

.content("分享需您同意讀取內(nèi)存卡權(quán)限")

.positiveText("去設(shè)置")

.negativeText("取消")

.onAny(newMaterialDialog.SingleButtonCallback() {

@Override

public voidonClick(@NonNullMaterialDialog dialog,@NonNullDialogAction which) {

if(which == DialogAction.NEGATIVE) {

dialog.dismiss();

}else if(which == DialogAction.POSITIVE) {

startAppSettings();

}

}

})

.show();

}

//啟動(dòng)應(yīng)用的設(shè)置

private void startAppSettings() {

Intent intent =new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);

intent.setData(Uri.parse(PACKAGE_URL_SCHEME+ getPackageName()));

startActivity(intent);

}

//靜態(tài)變量

private static final String PACKAGE_URL_SCHEME="package:";//方案

/**

*權(quán)限狀態(tài)碼

*/

private static final int REQUEST_STORAGE_READ_ACCESS_PERMISSION=1024;

我復(fù)制的代碼 空格沒有進(jìn)行處理

// dialog

compile'com.afollestad.material-dialogs:core:0.9.4.5'

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

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