Android现在将所有的权限分为了两类,一类是普通权限,一类是危险权限。

普通权限:指那些不会直接威胁到用户的安全和隐私的权限,对于这一部分权限申请,系统会自动帮我们授权。

危险权限:表示那些可能会触及用户隐私,或者对设备安全性造成影响的权限,如获取设备联系人信息,定位设置的地理位置等,对于这部分权值,必须由用户手动点击授权才可以使用相应功能。

Android系统中完整的权限列表:http://developer.android.com./reference/android/Manifest.permission.html

在本例中申请的是拨打电话的权限

  1. 在activity_main.xml中定义一个按钮,该按钮的响应事件为拨打电话
    内容提供器——在程序运行时申请管理权限
    2.在AndroidManifest.xml中申请拨打电话的权限
    内容提供器——在程序运行时申请管理权限
    3.在MainActivity中编写点击按钮时的响应
    (1)判断用户是否给我们授权
    借助ContactCompat.checkSelfPermission()方法,该方法接收两个参数,第一个是 Context,第二个是具体的权限名,比如打电话的权限名就是Manifest.permission.CALL_PHONE。然后用该方法的返回值与PackageManager.PERMISSION_GRANTED进行比较,相等则说明已经授权。
    如果已经授权则直接执行拨打电话的逻辑操作。如果没有授权就需要调用ActivityCompate.requestPermissions()方法来向用户申请授权,该方法需要传入三个参数,第一个参数是Activity的实例,第二个参数是一个String数组,我们把要申请的权限名放在数组中即可,第三个参数是请求码,唯一值即可,例1。

内容提供器——在程序运行时申请管理权限
(2)重写onRequestPermissionsResult()方法

调用完requestPremissions()方法之后,系统会弹出一个权限申请的对话框,以供用户选择,不论是哪种结果,最终都会回调onRequestPermissionsResult()方法,而授权的结果则封装在grantResult参数中。

内容提供器——在程序运行时申请管理权限
(3)拨打电话的具体操作—call()

我们构建了一个隐式的Intent,Intent的action指定为Intent.ACTION_CALL,这是系统内置的一个打电话动作。为了防止程序崩溃,我们将所有操作放在了异常捕获代码块中。
内容提供器——在程序运行时申请管理权限

相关文章:

  • 2021-04-26
  • 2021-09-11
  • 2021-10-20
  • 2022-12-23
  • 2021-09-10
猜你喜欢
  • 2022-12-23
  • 2022-01-06
  • 2022-12-23
  • 2021-09-21
  • 2021-12-14
  • 2021-09-10
相关资源
相似解决方案