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'