关于READ_PHONE_STATE权限问题

原创 2018年04月15日 10:09:34

前几天有一个朋友遇到了一个关于READ_PHONE_STATE的权限问题,尽管在manifest中添加了该权限,仍然会报权限不足。

READ_PHONE_STATE这个权限在Android6.0(Api 23)及以上的版本,不仅需要在manifest中添加权限,还需要在运行时请求权限。


一个不靠谱的解决方法(懒人解决方法),将app/build.gradle中的targetSdkVersion和CompileSdkVersion设置为低于23的版本。这样可以正常运行项目,但是不推荐这么做。


更好的办法是运行时检查并请求权限。首先仍然需要在manifest清单文件中添加权限申明。

然后动态请求权限:

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

if (permissionCheck != PackageManager.PERMISSION_GRANTED) {

    ActivityCompat.requestPermissions(this, new     String[]    {Manifest.permission.READ_PHONE_STATE},REQUEST_READ_PHONE_STATE);

    }

最后是回调:

@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
    switch (requestCode) {
        case REQUEST_READ_PHONE_STATE:
            if ((grantResults.length > 0) && (grantResults[0] == PackageManager.PERMISSION_GRANTED)) {
                //TODO
            }
            break;
        default:
            break;
    }
}

版权声明:本文为博主原创文章,转载注明出处。 https://blog.csdn.net/wuhaibin12/article/details/79946777

实施软件质量保障体系CMM/TSP/PSP的建议

实施软件质量保障体系CMM/TSP/PSP的建议 作者:xiaozhou 发布时间:2001/04/10 文章摘要:  本文试着从软件质量保证方向出发,概要阐述CMM(the Capability M...
  • CandyCat
  • CandyCat
  • 2001-05-17 21:38:00
  • 2435

在Android6.0手机上,已声明却无法获取READ_PHONE_STATE权限

一、异常Log信息 二、在AndroidManifest.xml中已添加READ_PHONE_STATE权限,能在android6.0以下的系统正常运行 三、处理办法:调用动态获取权限...
  • ecjtuhq
  • ecjtuhq
  • 2016-08-01 00:35:29
  • 6082

电话拦截的权限及编写问题

在 main文件夹下面创建aidl文件夹,然后把ITelephony.aidl 复制进去, 通过AIDL来找到ITelephony类,调用其endCall来挂断电话 写类继承PhoneS...
  • xguobin
  • xguobin
  • 2017-01-12 14:35:54
  • 111

Android M动态申请获取权限android.permission.READ_PHONE_STATE

Android M对应用的授权策略做了变动,如果我们想调用getDeviceId()获取手机串码,只在Manifest里添加android.permission.READ_PHONE_STATE权限是...
  • fenggering
  • fenggering
  • 2016-12-02 10:44:26
  • 21960

关于READ_PHONE_STATE权限问题

前几天有一个朋友遇到了一个关于READ_PHONE_STATE的权限问题,尽管在manifest中添加了该权限,仍然会报权限不足。READ_PHONE_STATE这个权限在Android6.0(Api...
  • wuhaibin12
  • wuhaibin12
  • 2018-04-15 10:09:34
  • 82

在android 6.0以上无法获取READ_PHONE_STATE权限的SecurityException的问题

我遇到的问题是,我在明明在AndroidManifest.xml中添加了READ_PHONE_STATE权限,可是在我的手机上一直报错,错误信息如下:getDeviceId: Neither user...
  • mxh1988123
  • mxh1988123
  • 2016-01-25 11:25:06
  • 3976

在android 6.0动态权限问题无法获取READ_PHONE_STATE权限的SecurityException的问题

Android 6.0 我遇到的问题是,我在明明在AndroidManifest.xml中添加了READ_PHONE_STATE权限,可是在我的手机上一直报错,错误信息如下: getDev...
  • xqkillua
  • xqkillua
  • 2017-02-27 13:35:16
  • 465

android拦截电话(AIDL+广播)

1 如何实现拦截电话呢? 本人是通过aidl和广播来实现的。先将电话监听的AIDL放进项目中。2 然后再清单文件中配置: ...
  • AAAABBBB_
  • AAAABBBB_
  • 2017-02-13 22:16:16
  • 279

java.lang.SecurityException: Requires READ_PHONE_STATE 之解决之道

从字面上来看,要求在配置文件里面加入   我刚开始于是我加入了这个权限,但是奇怪的事情是我加进去了,但是还是报错,这个让我百思不得其解,但是网上的答案都是一样,都是说加这个权限 最后,实在不行,...
  • q59521038
  • q59521038
  • 2013-08-20 14:55:44
  • 1662

android 6.0 无法获取READ_PHONE_STATE解决

1.首先要确认你的代码是否正确代码如下: TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEP...
  • Peter6359312
  • Peter6359312
  • 2017-01-13 20:09:58
  • 514
收藏助手
不良信息举报
您举报文章:关于READ_PHONE_STATE权限问题
举报原因:
原因补充:

(最多只允许输入30个字)