Android应用权限的动态获取

    xiaoxiao2021-12-15  4

    近日面试时候,被问到了关于Android应用权限的动态获取的问题,这里做个总结如下:

    在权限被拒绝后,我们可以使用

    ActivityCompat.requestPermissions(this, permissions, PERMISSION_REQUEST_CODE) 来动态获取。该方法是activitycompat的一个静态方法,兼容了低版本的问题。

    我们可以写一个权限检查的工具类,用来检查应用需要的权限:

    #

    public class PermissionsChecker { private final Context mContext; public PermissionsChecker(Context context) { mContext = context.getApplicationContext(); } // 判断权限集合 public boolean lacksPermissions(String... permissions) { for (String permission : permissions) { if (lacksPermission(permission)) { return true; } } return false; } // 判断是否缺少权限 private boolean lacksPermission(String permission) { return ContextCompat.checkSelfPermission(mContext, permission) == PackageManager.PERMISSION_DENIED; } } #

    如果缺少权限了,我们利用上面的

    ActivityCompat.requestPermissions(this, permissions, PERMISSION_REQUEST_CODE) 来获取权限即可。此时如果用户不提供给我们权限,我们可以将应用退出。

    // 显示缺失权限提示 private void showMissingPermissionDialog() { PermissionsDialog.Builder builder = new PermissionsDialog.Builder(this); builder.setTitle(R.string.help); builder.setMessage(R.string.string_help_text); // 拒绝, 退出应用 builder.setNegativeButton(R.string.quit, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { setResult(PERMISSIONS_DENIED); System.exit(0);//这里可以将应用退出 finish(); } }); builder.setPositiveButton(R.string.settings, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { startAppSettings();//启动系统设置 } }); builder.create().show(); }

    转载请注明原文地址: https://ju.6miu.com/read-1000416.html

    最新回复(0)