Android手机获取权限问题

来源:互联网 发布:带牛熊先知软件 编辑:程序博客网 时间:2024/05/18 03:56

  今天在这里对Android手机权限问题给出了一个小示例,如果读者看了以后觉得内容存在什么问题,请提出您宝贵的建议和意见。

  以下就是Android获取手机权限的方法,这里使用的例子是使用的”android.permission.READ_CONTACTS“权限。

  第1步:添加权限

    <!--1.Manifest文件中添加权限-->    <uses-permission android:name="android.permission.READ_CONTACTS"/>

  第2步:查看权限状态

  //2.检查所需权限的授权状态

  int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS);

  //3.判断所需权限是否已授权

  if (permissionCheck != PackageManager.PERMISSION_GRANTED){

  //4.若所需权限未授权,请求授权

  ActivityCompat.requestPermissions(this,newString[]{Manifest.permission.READ_CONTACTS},REQUEST_READ_CONTACTS);

  }else {

                   //读取联系人的方法

            readContacts();

         }

      第3步:根据授权结果,执行相应的操作

     //5.授权结果,通过ActivityCompat.onRequsetPermissionsResult回调授权结果,判断是否授权

      @Override

      public void onRequestPermissionsResult(intrequestCode,@NonNullString[] permissions,@NonNullint[] grantResults) {

            super.onRequestPermissionsResult(requestCode, permissions, grantResults);

            switch (requestCode){

                case REQUEST_READ_CONTACTS:

                   if ((grantResults.length>0) && grantResults[0] == PackageManager.PERMISSION_GRANTED){

                     //读取联系人的方法                    

                     readContacts();

                    }

                   break;

                default:

                   break;

                     }

            }


  备注:

               1:以上内容中使用的方法

    //读取联系人的方法

    private void readContacts() {

          //读取联系人

          Cursor cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null,null);

          SimpleCursorAdapter testAdapter = new SimpleCursorAdapter(this, R.layout.list_item, cursor,newString[

          {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,ContactsContract.CommonDataKinds.Phone.NUMBER},

          new int[]{R.id.list_name,R.id.list_phone});

          mListv = (ListView) findViewById(R.id.mlistv);

          mListv.setAdapter(testAdapter);

                                        }


    

   2:ActivityCompat.requestPermissions方法在被调用后,系统会弹出一个权限申请框,这个选择框无法更改:     如下图所示:   

此时,activity会调用onPause()方法,用户做了选择之后,对话框消失,onResume()方法又执行。