Nativescript Android 8.0 READ_CALL_LOG失败

时间:2018-11-23 07:44:13

标签: nativescript android-permissions android-8.0-oreo

使用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");

        });

2 个答案:

答案 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 &lt;b>%1$s&lt;/b> to access your phone call logs?</string>

此外,您还需要询问一些权限,而不仅仅是READ_CALL_LOG

CALL_LOG
READ_CALL_LOG
WRITE_CALL_LOG
ROCESS_OUTGOING_CALLS

以上here

的详细信息