Pra*_*sad 63 android android-6.0-marshmallow
我试图调用android.telecom.TelecomManager类的getCallCapablePhoneAccounts()方法.虽然我已经添加了所需的用户权限,但我收到了安全性异常.
这是我得到例外的代码行
List<PhoneAccountHandle> list = getTelecomManager().getCallCapablePhoneAccounts();
Run Code Online (Sandbox Code Playgroud)
清单中添加的用户权限
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
Run Code Online (Sandbox Code Playgroud)
异常堆栈跟踪引起:java.lang.SecurityException:getDefaultOutgoingPhoneAccount:用户10102和当前进程都没有android.permission.READ_PHONE_STATE.在android.os.Parcel.readException(Parcel.java:1599)的android.os.Parcel.readException(Parcel.java:1552)com.android.internal.telecom.ITelecomService $ Stub $ Proxy.getDefaultOutgoingPhoneAccount(ITelecomService.java) :615)在android.telecom.TelecomManager.getDefaultOutgoingPhoneAccount(TelecomManager.java:439)
son*_*368 73
在Android> = 6.0,我们必须请求权限运行时.
Step1:添加AndroidManifest.xml文件
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
Run Code Online (Sandbox Code Playgroud)
第2步:请求权限.
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);
} else {
//TODO
}
Run Code Online (Sandbox Code Playgroud)
第3步:请求权限时处理回调.
@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;
}
}
Run Code Online (Sandbox Code Playgroud)
编辑: 在此处阅读官方指南在运行时请求权限
小智 54
你在运行Android M吗?如果是这样,这是因为在清单中声明权限是不够的.对于某些权限,您必须在运行时明确询问用户:http://developer.android.com/training/permissions/requesting.html
我在三星设备上遇到了这个问题(其他人很好).就像zyamys在他/她的评论中所建议的那样,我添加了manifest.permission行,但除了代替原始行之外,还有:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.Manifest.permission.READ_PHONE_STATE" />
Run Code Online (Sandbox Code Playgroud)
我的目标是API 22,所以不需要明确要求权限.
| 归档时间: |
|
| 查看次数: |
127209 次 |
| 最近记录: |