我如何运行Android方法来提取VCF格式的联系人列表?有没有一个意图可以直接调用这个动作?
mkshixfv1#
以下是如何提取到VCF文件并通过Intent共享它,如果您愿意,可以选择共享单个联系人:
@WorkerThread @Nullable public static Intent getContactShareIntent(@NonNull Context context, @Nullable String contactId, @NonNull String filePath) { final ContentResolver contentResolver = context.getContentResolver(); Cursor cursor = TextUtils.isEmpty(contactId) ? contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null) : contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, Data.CONTACT_ID + "=?", new String[]{contactId}, null); if (cursor == null || !cursor.moveToFirst()) return null; final File file = new File(filePath); file.delete(); do { String lookupKey = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY)); Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_VCARD_URI, lookupKey); AssetFileDescriptor fd; try { fd = contentResolver.openAssetFileDescriptor(uri, "r"); if (fd == null) return null; FileInputStream fis = fd.createInputStream(); IOUtils.copy(fis, new FileOutputStream(filePath, false)); cursor.moveToNext(); } catch (Exception e1) { e1.printStackTrace(); } } while (cursor.moveToNext()); Intent intent = new Intent(Intent.ACTION_SEND); intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file)); intent.setType("*/*"); return intent; }
chy5wohz2#
您可以在联系人应用程序中手动执行此操作。但没有意图。如果你想让你的应用程序有这样的导出,你必须自己写或者使用这里的代码。vcardio
zlwx9yxi3#
2016年9月,这一情况发生了变化。现在,您可以使用“联系人”应用程序将联系人导出到VCF文件:在菜单中选择“导入/导出”,然后选择其中一个导出项。您仍然需要从手机上获取文件,但通过ADB(或电子邮件)很容易。
3条答案
按热度按时间mkshixfv1#
以下是如何提取到VCF文件并通过Intent共享它,如果您愿意,可以选择共享单个联系人:
chy5wohz2#
您可以在联系人应用程序中手动执行此操作。但没有意图。如果你想让你的应用程序有这样的导出,你必须自己写或者使用这里的代码。vcardio
zlwx9yxi3#
2016年9月,这一情况发生了变化。现在,您可以使用“联系人”应用程序将联系人导出到VCF文件:在菜单中选择“导入/导出”,然后选择其中一个导出项。您仍然需要从手机上获取文件,但通过ADB(或电子邮件)很容易。