使用Nativescript 5.0。
下面的代码在Android 6.0.1版中运行良好
但是无法在Android 8.0中获得许可
权限寻求消息框不会出现。
两款手机的权限详细信息之间存在差异,在Android 8.0中,附加权限被视为“通过联系人拨号”,无法手动设置。
Permissions.requestPermission(android.Manifest.permission.READ_CALL_LOG, "Needed for connectivity status").then(() => {
console.log("refresh - Permission granted!");
this.readCallLog();
alert("in refresh Permission granted");
}).catch(() => {
console.log("Permission is not granted (sadface)");
alert("in refresh Permission NOT granted");
});
答案 0 :(得分:0)
尝试包括READ_PHONE_STATE
权限。
但是,确切地说,Android 8并未进行任何更改,但Android 9引入了重大更改以读取呼叫记录权限,现在也需要电话状态权限才能起作用。
答案 1 :(得分:0)
在使用较早的Android版本时,您仅可以请求权限READ_CALL_LOG
,而较新的Android版本在请求用户呼叫日志的方式上进行了一些更改。目的是向用户提供更多信息,以解释您为什么需要这些权限。
在Andorid资源中应提供说明性的字符串值
<string name="permgroupdesc_calllog">read and write phone call log</string>
<string name="permgrouprequest_calllog">Allow <b>%1$s</b> to access your phone call logs?</string>
此外,您还需要询问一些权限,而不仅仅是READ_CALL_LOG
:
CALL_LOG
READ_CALL_LOG
WRITE_CALL_LOG
ROCESS_OUTGOING_CALLS
以上here
的详细信息