Android基础之6.0系统以上的权限分配

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //检查当前权限(若没有该权限,值为-1;若有该权限,值为0)
        int hasReadExternalStoragePermission = ContextCompat.checkSelfPermission(getApplication(),Manifest.permission.READ_EXTERNAL_STORAGE);
        Log.e("PERMISION_CODE",hasReadExternalStoragePermission+"***");
        if(hasReadExternalStoragePermission== PackageManager.PERMISSION_GRANTED){
            obtainMediaInfo();
        }else{
            //若没有授权,会弹出一个对话框(这个对话框是系统的,开发者不能自己定制),用户选择是否授权应用使用系统权限
            ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},1);
        }

    }

    //用户选择是否同意授权后,会回调这个方法
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        if(requestCode==1){
            if(permissions[0].equals(Manifest.permission.READ_EXTERNAL_STORAGE)&&grantResults[0]==PackageManager.PERMISSION_GRANTED){
                //用户同意授权,执行读取文件的代码
                obtainMediaInfo();
            }else{
                //若用户不同意授权,直接暴力退出应用。
                // 当然,这里也可以有比较温柔的操作。
                finish();
            }
        }
    }

    //将之前获取音乐信息的代码单独封装到了一个方法里面
    private void obtainMediaInfo() {
        Cursor cursor = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, null);
        cursor.moveToFirst();
        do {
            String title = cursor.getString(cursor.getColumnIndex("title"));
            Log.e("TITLE",title);
        }while (cursor.moveToNext());
    }
}
/*--------------------- 
代码作者:3052world 
来源:CSDN 
原文:https://blog.csdn.net/jasper_success/article/details/78836899 
*/
原文地址:https://www.cnblogs.com/adressian/p/10083513.html