• 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 
    */
  • 相关阅读:
    [翻译]关于堆和堆栈
    sql 字符+数值 混合排序 lcs
    证明DataReader分页的可行性 lcs
    谈谈我对小公司、大公司及个人成长的见解 lcs
    sina 通用js代码说明 lcs
    Linux系统下生成证书 https证书
    【转】51单片机外部中断的C51编程
    【转】如何建立个人网站
    【转】关于C51的中断编程[原创]
    【转】毫不费力:破解加密PDF文档就使用这两三招
  • 原文地址:https://www.cnblogs.com/adressian/p/10083513.html
Copyright © 2020-2023  润新知