zoukankan      html  css  js  c++  java
  • 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 
    */
  • 相关阅读:
    visual studio项目多级引用不拷贝dll的问题
    ef6 code first,对已有数据库如何执行迁移
    wsl 修改默认安装路径
    Windows docker镜像文件无法删除
    Docker镜像下载很慢,各种加速无效
    activemq整合springboot使用(个人微信小程序用)
    angular入门一之环境安装及项目创建
    jquery中attr()和prop()的区别
    IntelliJ IDEA部署web项目,Tomcat没有出现Artifacts
    IntelliJ IDEA:创建Java Web工程
  • 原文地址:https://www.cnblogs.com/adressian/p/10083513.html
Copyright © 2011-2022 走看看