Android6.0以上动态获取拍照、录音等权限

  • Post author:
  • Post category:其他


最近做的项目遇上Android6.0以上版本总是有些地方报错,原因是没有动态获取一些权限

报错导致闪退,记录一个比较简单的获取权限的方法

配置文件先加入静态权限

<uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 -->
private final String[] PERMISSIONS = {
            Manifest.permission.RECORD_AUDIO,
            Manifest.permission.CAMERA,
            Manifest.permission.WRITE_EXTERNAL_STORAGE,
            Manifest.permission.READ_PHONE_STATE,
            Manifest.permission.ACCESS_COARSE_LOCATION,
            Manifest.permission.ACCESS_FINE_LOCATION,
    };

定义全局变量

onCreate方法内判断版本

if (Build.VERSION.SDK_INT>=23){
            if (!hasPermissions(this, PERMISSIONS)) {
                ActivityCompat.requestPermissions(this, PERMISSIONS, 1);
            }
        }

调用方法

private boolean hasPermissions(Context context, String... permissions) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context != null && permissions != null) {
            for (String permission : permissions) {
                if (ActivityCompat.checkSelfPermission(context, permission)
                        != PERMISSION_GRANTED) {
                    return false;
                }
            }
        }
        return true;
    }

demo下载地址:

https://download.csdn.net/download/fryan28/11388338

打开后会提示是否允许……

点击允许可以获取相关权限



版权声明:本文为FRYAN28原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。