android端asmack获取VCard问题

在VCard vcard = new VCard();
        vcard.load(IMManager.getConnection(), user);

之前加上

ProviderManager.getInstance().addIQProvider("vCard", "vcard-temp", new org.jivesoftware.smackx.provider.VCardProvider());

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 11中,PBAP获取通讯录的方法与之前的版本略有不同。以下是使用PBAP获取通讯录的步骤: 1. 确保设备支持PBAP协议,并且已经连接到目标设备。可以使用BluetoothAdapter.getDefaultAdapter().getProfileProxy()方法获取PBAP代理对象。 2. 使用PBAP代理对象的requestPhonebook()方法请求电话簿。该方法需要传入一个电话簿类型参数,例如ContactsContract.PBAP_VCARD_TYPE。 3. PBAP代理对象会异步返回电话簿数据。可以使用ContentResolver.insert()方法将数据插入到设备的联系人数据库中。 以下是一个示例代码: ```java BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); BluetoothPbapClient pbapClient = null; bluetoothAdapter.getProfileProxy(context, new BluetoothProfile.ServiceListener() { @Override public void onServiceConnected(int profile, BluetoothProfile proxy) { if(profile == BluetoothProfile.PBAP_CLIENT) { pbapClient = (BluetoothPbapClient) proxy; pbapClient.start(); pbapClient.setPriority(device, BluetoothProfile.PRIORITY_AUTO_CONNECT); pbapClient.requestPhonebook(device, ContactsContract.PBAP_VCARD_TYPE); } } @Override public void onServiceDisconnected(int profile) { if(profile == BluetoothProfile.PBAP_CLIENT) { pbapClient = null; } } }); ContentValues values = new ContentValues(); values.put(ContactsContract.RawContacts.ACCOUNT_TYPE, null); values.put(ContactsContract.RawContacts.ACCOUNT_NAME, null); Uri rawContactUri = getContentResolver().insert(ContactsContract.RawContacts.CONTENT_URI, values); long rawContactId = ContentUris.parseId(rawContactUri); String selectPhone = ContactsContract.Data.RAW_CONTACT_ID + " = " + rawContactId + " AND " + ContactsContract.Data.MIMETYPE + " = '" + ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE + "'"; values.clear(); values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId); values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE); values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, phoneNumber); values.put(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE); getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values); ``` 需要注意的是,Android 11中的PBAP获取通讯录需要用户授权。因此,在使用PBAP获取通讯录时,需要请求相应的权限。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值