ns-permissions
添加插件描述
npm i --save ns-permissions

ns-permissions

Nativescript permissions,是 nativescript-perms 的克隆,导出更多的 Android 功能并支持高级的 Android 权限请求。

重大变更

ns-permissions@2 对应 Nativescript@7

ns-permissions@1 对应 Nativescript 版本 < 7

安装

tns plugin add ns-permissions

API

权限状态

Promise 解析为 [status:状态, always:boolean],其中状态为以下之一

返回值 备注
authorized 用户已授权此权限
denied 用户至少拒绝过此权限一次。在 iOS 上这意味着用户将不会被再次提示。Android 用户可以被多次提示,直到他们选择 '不再询问'。
restricted iOS - 这意味着用户无法授予此权限,可能是因为设备不支持或者被家长控制阻止。 Android - 这意味着用户在拒绝权限时选择了 '不再询问'。
undetermined 用户尚未被提示权限对话框

Android 权限有

AndroidPermissions Android
READ_CALENDAR 'android.permission.READ_CALENDAR'
WRITE_CALENDAR 'android.permission.WRITE_CALENDAR'
CAMERA 'android.permission.CAMERA'
READ_CONTACTS 'android.permission.READ_CONTACTS'
WRITE_CONTACTS 'android.permission.WRITE_CONTACTS'
GET_ACCOUNTS 'android.permission.GET_ACCOUNTS'
ACCESS_FINE_LOCATION 'android.permission.ACCESS_FINE_LOCATION'
ACCESS_COARSE_LOCATION 'android.permission.ACCESS_COARSE_LOCATION'
RECORD_AUDIO 'android.permission.RECORD_AUDIO'
READ_PHONE_STATE 'android.permission.READ_PHONE_STATE'
CALL_PHONE 'android.permission.CALL_PHONE'
READ_CALL_LOG 'android.permission.READ_CALL_LOG'
WRITE_CALL_LOG 'android.permission.WRITE_CALL_LOG'
ADD_VOICEMAIL 'com.android.voicemail.permission.ADD_VOICEMAIL'
USE_SIP 'android.permission.USE_SIP'
PROCESS_OUTGOING_CALLS 'android.permission.PROCESS_OUTGOING_CALLS'
BODY_SENSORS 'android.permission.BODY_SENSORS'
SEND_SMS 'android.permission.SEND_SMS'
RECEIVE_SMS 'android.permission.RECEIVE_SMS'
READ_SMS 'android.permission.READ_SMS'
RECEIVE_WAP_PUSH 'android.permission.RECEIVE_WAP_PUSH'
RECEIVE_MMS 'android.permission.RECEIVE_MMS'
READ_EXTERNAL_STORAGE 'android.permission.READ_EXTERNAL_STORAGE'
WRITE_EXTERNAL_STORAGE 'android.permission.WRITE_EXTERNAL_STORAGE'

方法

方法名 参数 备注
check() type - 返回一个包含权限状态的 Promise。有关特殊情况的说明,请参阅 iOS 备注
hasPermission() type - 返回权限状态。
request() type - 接受除 backgroundRefresh 之外的所有权限类型。如果当前状态是 undetermined,则显示权限对话框并返回一个包含结果的状态的 Promise。否则,立即返回一个包含当前状态的 Promise。有关特殊情况的说明,请参阅 iOS 备注
checkPermissions() Object - 接受权限类型数组并返回一个将权限对象映射到状态的 Promise
requestPermissions() [types] - 接受权限类型数组并请求多个权限
getTypes() none - 返回一个有效权限类型的数组
openSettings() none - (仅限iOS - 8.0及以上) 将用户切换到您的应用设置页面
canOpenSettings() none - (仅限iOS) 返回一个布尔值,指示设备是否支持切换到设置页面
// request Read Contacts Permissions
function requestReadContacts() {
return new Promise((resolve, reject) => {
Permissions.check(Permissions.AndroidPermissions.READ_CONTACTS).then((result) => {
if (result[0] === 'authorized') {
resolve();
} else if (result[0] === 'restricted') {
reject();
} else {
Permissions.request(Permissions.AndroidPermissions.READ_CONTACTS).then((requestResult) => {
requestResult[0] === 'authorized' ? resolve() : reject();
}).catch(() => reject())
;
}
});
});
}

许可证

Apache许可证第2版,2004年1月