uni-app 获取手机通讯录及SIM卡通讯录功能,支持ios和安卓

发布于 1周前 作者 bupafengyu 来自 Uni-App

uni-app 获取手机通讯录及SIM卡通讯录功能,支持ios和安卓

获取手机通讯录+sim卡通讯录,支持ios和安卓

5 回复

可以做 专业插件开发 q 1196097915 主页 https://ask.dcloud.net.cn/question/91948


可加V 详聊 foxmee

可以做,联系QQ:1804945430

可以做,联系:18968864472(同微)

uni-app 中获取手机通讯录及SIM卡通讯录功能,需要分别处理iOS和Android平台,因为这两个平台的API和权限管理机制有所不同。以下是一个基本的代码示例,展示如何在两个平台上获取通讯录数据。请注意,实际开发中需要根据具体需求调整代码,并确保获取用户授权。

Android 平台

AndroidManifest.xml 中添加权限:

<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

main.js 或相关页面中请求权限并获取通讯录:

// 请求权限
plus.android.requestPermissions(['android.permission.READ_CONTACTS', 'android.permission.READ_PHONE_STATE'], function(event) {
    if (event.deniedAlways.length === 0) {
        getContacts();
    } else {
        console.error('Permission denied');
    }
});

function getContacts() {
    var main = plus.android.importClass('android.content.Context');
    var contentResolver = plus.android.runtimeMainActivity().getContentResolver();
    var uri = plus.android.importClass('android.provider.ContactsContract$Contacts');
    var cursor = contentResolver.query(uri, null, null, null, null);

    while (cursor.moveToNext()) {
        var contactId = cursor.getString(cursor.getColumnIndexOrThrow(uri.CONTENT_ID));
        // 后续处理每个联系人详情,这里省略
    }
    cursor.close();
}

iOS 平台

manifest.json 中配置权限:

"plus": {
    "distribute": {
        "apple": {
            "plist": [
                {
                    "NSContactsUsageDescription": "App需要访问您的通讯录以提供功能"
                }
            ]
        }
    }
}

在相关页面中请求权限并获取通讯录:

plus.ios.requestAuthorization({
    code: plus.ios.AUTHORIZATION_CONTACTS
}, function(event) {
    if (event.denied) {
        console.error('Permission denied');
    } else {
        getContacts();
    }
});

function getContacts() {
    var CNContactStore = plus.ios.import('Contacts/CNContactStore');
    var store = CNContactStore.alloc().init();
    var keysToFetch = [
        CNContact.descriptorForRequiredKeys()
    ];

    var request = CNContactFetchRequest.alloc().init();
    request.setKeysToFetch(keysToFetch);

    var error = plus.ios.newObject('NSError');
    store.enumerateContactsWithFetchRequestErrorUsingBlock(request, error, function(contact, stop) {
        // 处理每个联系人详情,这里省略
    }, function(error) {
        console.error('Error fetching contacts:', error);
    });
}

上述代码仅展示了获取通讯录的基本框架,实际开发中需要根据具体需求处理联系人详情,如姓名、电话、邮箱等,并考虑错误处理和用户体验。由于安全和隐私考虑,获取通讯录数据前必须确保已获得用户授权。

回到顶部