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 */