1.首先API版本至少要23
2.然后在需要使用权限的地方进行权限申请:个人习惯在应用的mainActivity中将所有权限一起申请,如果允许,则继续,如果不允许,则finsh,那么应用退出。
E.g:
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)
{
//无这个权限
//申请WRITE_EXTERNAL_STORAGE权限
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},WRITE_EXTERNAL_STORAGE_REQUEST_CODE);
}else
{
//有这个权限
}
这是一个写SD卡的权限申请
如果没有,则进行权限申请,如果有,则在else里继续运行下去
3.权限申请之后,会在手机上弹出一个dialog,此时有2种选择,并且都会调用onRequestPermissionsResult方法:
①允许
在此方法中执行需要权限的步骤
②不允许
可以弹出Toast等其他,推荐直接退出,这样对于应用的权限处理就成为了必须获取权限
E.g:
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)
{
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
doNext(requestCode, grantResults);
}
private void doNext(int requestCode, int[] grantResults)
{
if (requestCode == 1)
{
if (grantResults[0] == PackageManager.PERMISSION_GRANTED)
{
// Permission Granted 允许获取权限后执行
} else
{
// Permission Denied 不允许获取权限后执行
}
}
}