android 6.0权限统一,snails-permission
发布日期:2021-06-24 16:16:21 浏览次数:2 分类:技术文章

本文共 3838 字,大约阅读时间需要 12 分钟。

public class PermissionDelegate {

public interface IokDelegate { void onNext(int tagCode); }

private final int PERMISSION_CODE = 200;

private final Context mCtx;

private int mTagCode = -1;

private IokDelegate iOkDelegate = null;

private AlertDialog mAlertDialog = null;

public PermissionDelegate(Context ctx) {

this.mCtx = ctx;

}

public PermissionDelegate code(int tagCode) {

this.mTagCode = tagCode;

return this;

}

public PermissionDelegate setIokDelegate(IokDelegate delegate) {

this.iOkDelegate = delegate;

return this;

}

@NeedPermission(value = {

Manifest.permission.READ_PHONE_STATE,

Manifest.permission.READ_EXTERNAL_STORAGE,

Manifest.permission.WRITE_EXTERNAL_STORAGE

}, requestCode = PERMISSION_CODE)

public void checkPermission() {

if (this.iOkDelegate != null) this.iOkDelegate.onNext(this.mTagCode);

}

public void onDestroy() {

dismissAlertDialog();

iOkDelegate = null;

}

/**

* 构建对话框

*/

private AlertDialog alertDialog(String title, String message,

String cancel, DialogInterface.OnClickListener cancelListener,

String ok, DialogInterface.OnClickListener okListener) {

final AlertDialog.Builder builder = new AlertDialog.Builder(mCtx)

.setMessage(message).setCancelable(false);

if (!TextUtils.isEmpty(title)) builder.setTitle(title);

if (!TextUtils.isEmpty(ok)) builder.setPositiveButton(ok, okListener);

if (!TextUtils.isEmpty(cancel)) builder.setNegativeButton(cancel, cancelListener);

return builder.create();

}

/**

* 显示对话框

*/

private void showAlertDialog(String title, String message,

String cancel, DialogInterface.OnClickListener cancelListener,

String ok, DialogInterface.OnClickListener okListener) {

dismissAlertDialog();

mAlertDialog = alertDialog(title, message, cancel, cancelListener, ok, okListener);

mAlertDialog.show();

}

/**

* 关闭对话框

*/

private void dismissAlertDialog() {

if (mAlertDialog != null) {

if (mAlertDialog.isShowing()) mAlertDialog.dismiss();

mAlertDialog = null;

}

}

@PermissionDenied

private void callPermissionDenied(DenyBean model) {

if (model != null && model.getDenyList() != null) {

switch (model.getRequestCode()) {

case PERMISSION_CODE:

final String sPermission = deniedString(model);

final StringBuilder sBuilder = new StringBuilder("由于无法获取您的");

sBuilder.append(sPermission)

.append("权限,玩Android无法正常运行,请开启权限:设置-应用-玩Android-权限")

.append(sPermission);

final String title = "玩Android无法正常运行";

final String message = sBuilder.toString();

showAlertDialog(title, message, "退出", (dialog, which) -> {

if (dialog != null) dialog.dismiss();

dismissAlertDialog();

ActivityStackManager.instance().exitApp();

}, "去设置", (dialog, which) -> {

if (dialog != null) dialog.dismiss();

dismissAlertDialog();

SettingUtil.go2Setting(mCtx);

new Handler().postDelayed(() -> ActivityStackManager.instance().exitApp(), 2000);

});

break;

default: break;

}

}

}

// 权限被拒绝,提示message

private String deniedString(DenyBean model) {

String sPermission = "";

if (model != null && model.getDenyList() != null) {

for (int i = 0; i < model.getDenyList().size(); i++) {

switch (model.getDenyList().get(i)) {

case Manifest.permission.READ_PHONE_STATE:

sPermission += "设备信息、";

break;

case Manifest.permission.READ_EXTERNAL_STORAGE:

if (!sPermission.contains("存储空间")) sPermission += "存储空间、";

break;

case Manifest.permission.WRITE_EXTERNAL_STORAGE:

if (!sPermission.contains("存储空间")) sPermission += "存储空间、";

break;

default:

break;

}

}

if (sPermission.endsWith("、"))

sPermission = sPermission.substring(0, sPermission.length() - 2);

}

return sPermission;

}

@PermissionCanceled

private void callPermissionCanceled(CancelBean model) {

if (model != null) {

switch (model.getRequestCode()) {

case PERMISSION_CODE:

new Handler().postDelayed(() -> ActivityStackManager.instance().exitApp(), 3000);

final String message = "由于无法获取您的权限,玩Android无法正常运行,应用将在3s后自动退出";

showAlertDialog("", message, "", null, "", null);

break;

default: break;

}

}

}

}

转载地址:https://blog.csdn.net/weixin_33758343/article/details/117713898 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:html压缩包用什么软件打开方式,分享一招超简单打开zip文件的方法
下一篇:重置网络配置 android,重置Android移动网络信号?

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月08日 16时34分15秒