这是我的app.json
{
"expo": {
"name": "add-contact-list",
"slug": "add-contact-list",
"version": "1.0.0",
"assetBundlePatterns": [
"**/*"
],
"android": {
"package": "the.contacts.adder"
}
},
"android": {
"permissions": [
"WRITE_CONTACTS"
]
}
}
你可以看到我已经有权限了,在我的代码中,我也向用户请求了权限
const { status } = await Contacts.requestPermissionsAsync();
if (status === 'granted') {
await Contacts.addContactAsync(newContact);
}
但是当我尝试添加联系人时,我得到以下错误:
[Unhandled promise rejection: Error: Missing write contacts permission.]
我做错了什么?我在android上测试我的应用
我只使用了一个主要组件,这里是完整的源代码。
import React from 'react';
import { StyleSheet, Text, View, TouchableOpacity } from 'react-native';
import * as Contacts from 'expo-contacts';
export default function App() {
const start = async (params) => {
const { status } = await Contacts.requestPermissionsAsync();
if (status === 'granted') {
const newContact = {
[Contacts.Fields.Name]: `Test`,
[Contacts.Fields.PhoneNumbers]: [
{
number: '(81) 8184-2218',
isPrimary: true,
digits: `81842218`,
countryCode: '+52',
id: `XXXX-TEST`,
label: `TEST`,
},
]
};
await Contacts.addContactAsync(newContact);
}
}
return (
<View style={styles.container}>
<Text>Click the button to save the phone number</Text>
<TouchableOpacity
onPress={start}
style={styles.button}>
<Text style={{ fontSize: 20, color: '#fff' }}>Click here</Text>
</TouchableOpacity>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center',
},
button: {
width: 120,
height: 57,
backgroundColor: '#000',
textAlign: 'center'
}
});
我也生成了一个独立的应用程序,但它也不能解决我的问题。
我不知道我是否也需要编辑AndroidManifest.xml
,我已经检查了这个文件,权限没有在那里注册,但是因为我使用expo来构建应用程序,我想没有必要编辑本地平台源代码。
我想你忘记在你的app.json
中添加READ_CONTACTS
Android Permission .
READ_CONTACTS
:允许程序读取用户的联系人数据
WRITE_CONTACTS
:允许程序写入用户的联系人数据
{
"expo": {
"name": "add-contact-list",
"slug": "add-contact-list",
"version": "1.0.0",
"assetBundlePatterns": [
"**/*"
],
"android": {
"package": "the.contacts.adder"
}
},
"android": {
"permissions": [
"READ_CONTACTS",
"WRITE_CONTACTS"
]
}
}
这是文档:权限
app。Json必须有这个权限:
"android": {
...
"permissions": [
...
"android.permission.WRITE_CONTACTS"
]
},