我无法使用 expo react native 添加联系人,需要"WRITE_CONTACTS"权限,但我已经拥有它



这是我的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_CONTACTSAndroid 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"
]
},

相关内容

  • 没有找到相关文章

最新更新