ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

React-Native之Android(6,androidapp开发从入门到精通

2022-01-22 16:33:07  阅读:130  来源: 互联网

标签:err show granted PermissionsAndroid androidapp React Android 权限 data


//就举一个例子 记得加上async异步

async requestReadPermission() {

try {

//返回string类型

const granted = await PermissionsAndroid.request(

PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE,

{

//第一次请求拒绝后提示用户你为什么要这个权限

‘title’: ‘我要读写权限’,

‘message’: ‘没权限我不能工作,同意就好了’

}

)

if (granted === PermissionsAndroid.RESULTS.GRANTED) {

this.show(“你已获取了读写权限”)

} else {

this.show(“获取读写权限失败”)

}

} catch (err) {

this.show(err.toString())

}

}

//核实

checkPermission() {

try {

//返回Promise类型

const granted = PermissionsAndroid.check(

PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE

)

granted.then((data)=>{

this.show(“是否获取读写权限”+data)

}).catch((err)=>{

this.show(err.toString())

})

} catch (err) {

this.show(err.toString())

}

}

//请求多个

async requestMultiplePermission() {

try {

const permissions = [

PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE,

PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,

PermissionsAndroid.PERMISSIONS.CAMERA

]

//返回得是对象类型

const granteds = await PermissionsAndroid.requestMultiple(permissions)

var data = "是否同意地址权限: "

if (granteds[“android.permission.ACCESS_FINE_LOCATION”] === “granted”) {

data = data + “是\n”

} else {

data = data + “否\n”

}

data = data+"是否同意相机权限: "

if (granteds[“android.permission.CAMERA”] === “granted”) {

data = data + “是\n”

} else {

data = data + “否\n”

}

data = data+"是否同意存储权限: "

if (granteds[“android.permission.WRITE_EXTERNAL_STORAGE”] === “granted”) {

data = data + “是\n”

} else {

data = data + “否\n”

}

this.show(data)

} catch (err) {

this.show(err.toString())

}

}

  • 完整代码

import React,{Component} from ‘react’

import {

StyleSheet,

View,

Text,

TouchableOpacity,

ToastAndroid,

PermissionsAndroid,

} from ‘react-native’

export default class PermissionAndroidView extends Component {

render() {

return (

<TouchableOpacity style={styles.button_view}

onPress={this.requestReadPermission.bind(this)}>

申请读写权限

<TouchableOpacity style={styles.button_view}

onPress={this.requestCarmeraPermission.bind(this)}>

申请相机权限

<TouchableOpacity style={styles.button_view}

onPress={this.requestLocationPermission.bind(this)}>

申请访问地址权限

<TouchableOpacity style={styles.button_view}

onPress={this.checkPermission.bind(this)}>

查询是否获取了读写权限

<TouchableOpacity style={styles.button_view}

onPress={this.requestMultiplePermission.bind(this)}>

一次申请所以权限

)

}

show(data) {

ToastAndroid.show(data,ToastAndroid.SHORT)

}

/*

  • 弹出提示框向用户请求某项权限。返回一个promise,最终值为用户是否同意了权限申请的布尔值。

  • 其中rationale参数是可选的,其结构为包含title和message)的对象。

  • 此方法会和系统协商,是弹出系统内置的权限申请对话框,

  • 还是显示rationale中的信息以向用户进行解释。

  • */

async requestReadPermission() {

try {

//返回string类型

const granted = await PermissionsAndroid.request(

PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE,

{

//第一次请求拒绝后提示用户你为什么要这个权限

‘title’: ‘我要读写权限’,

‘message’: ‘没权限我不能工作,同意就好了’

}

)

if (granted === PermissionsAndroid.RESULTS.GRANTED) {

this.show(“你已获取了读写权限”)

} else {

this.show(“获取读写权限失败”)

}

} catch (err) {

this.show(err.toString())

}

}

async requestCarmeraPermission() {

try {

const granted = await PermissionsAndroid.request(

PermissionsAndroid.PERMISSIONS.CAMERA,

{

//第一次请求拒绝后提示用户你为什么要这个权限

‘title’: ‘我要相机权限’,

‘message’: ‘没权限我不能工作,同意就好了’

}

)

if (granted === PermissionsAndroid.RESULTS.GRANTED) {

this.show(“你已获取了相机权限”)

} else {

this.show(“获取相机失败”)

}

} catch (err) {

this.show(err.toString())

}

}

async requestLocationPermission() {

try {

const granted = await PermissionsAndroid.request(

PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,

{

//第一次请求拒绝后提示用户你为什么要这个权限

‘title’: ‘我要地址查询权限’,

‘message’: ‘没权限我不能工作,同意就好了’

}

)

if (granted === PermissionsAndroid.RESULTS.GRANTED) {

this.show(“你已获取了地址查询权限”)

} else {

this.show(“获取地址查询失败”)

}

} catch (err) {

this.show(err.toString())

}

}

checkPermission() {

try {

//返回Promise类型

const granted = PermissionsAndroid.check(

PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE

)

granted.then((data)=>{

this.show(“是否获取读写权限”+data)

(granted === PermissionsAndroid.RESULTS.GRANTED) {

this.show(“你已获取了地址查询权限”)

} else {

this.show(“获取地址查询失败”)

}

} catch (err) {

this.show(err.toString())

}

}

checkPermission() {

try {

//返回Promise类型

const granted = PermissionsAndroid.check(

PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE

)

granted.then((data)=>{

this.show(“是否获取读写权限”+data)

标签:err,show,granted,PermissionsAndroid,androidapp,React,Android,权限,data
来源: https://blog.csdn.net/m0_66264673/article/details/122639333

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有