首先,我安装了
npm install react-native-contacts --save
从 npm 并根据 npm 文档设置对我的项目的所有依赖项。但是,我仍然被拒绝,
1.在android/settings.gradle
include ':react-native-contacts' project(':react-native-contacts').projectDir = new
File(rootProject.projectDir,
'../node_modules/react-native-contacts/android')
2.在android/app/build.gradle
dependencies {
...
implementation project(':react-native-contacts')
}
注册模块
// MainApplication.java
import com.rt2zz.reactnativecontacts.ReactNativeContacts; // <--- import
public class MainApplication extends Application implements ReactApplication { ...... @Override protected List<ReactPackage>
getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new ReactNativeContacts()); // <------ add this } ...... }
允许:
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.READ_PROFILE" />
我在 Mycontact.js 中的代码:
import React, {useState,useEffect} from 'react';
import {
View,
Text,
Button,
FlatList,
StyleSheet,
TouchableOpacity,
PermissionsAndroid
} from 'react-native';
import Ionicons from 'react-native-vector-icons/Ionicons';
import Contacts from 'react-native-contacts';
import { useIsFocused } from '@react-navigation/native';
import FontAwesome5 from 'react-native-vector-icons/FontAwesome5';
import ContactCard from './ContactCard';
const Mycontact = ({navigation}) => {
const [myContacts, setMycontacts] = useState([]);
const isFocus = useIsFocused();
useEffect(() => {
getAllContact();
}, [isFocus]);
async function getAllContact(){
try{
const permission = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.READ_CONTACTS,
{
'title': 'Contacts',
'message': 'This app would like to view your contacts.',
'buttonPositive': 'Please accept bare mortal'
}
);
if(permission === PermissionsAndroid.RESULTS.GRANTED){
const contactis = await Contacts.getAll();
console.log('contactis');
setMycontacts(contactis);
}else{
console.log("Permission Denied");
}
}catch(error){
console.log(error);
}
}
return (
<View>
<Ionicons
name='add-circle'
size={62}
color='green'
style={styles.addIcon}
onPress={()=>navigation.navigate('Createcontact') }
/>
<FlatList
data={myContacts}
keyExtractor={(item)=> item.recordId}
renderItem={({item})=>{
<TouchableOpacity onPress={()=>navigation.navigate('Profile',{
contactinfo:{id:item.recordId}
})}>
<ContactCard contactinfo={item}/>
</TouchableOpacity>
}}
/>
</View>
);
}
const styles= StyleSheet.create({
})
export default Mycontact;
仍然,我得到许可被拒绝;在运行代码期间没有出现模态或弹出窗口。为什么???
导致控制台
Permission denied