Получить контакты и отправить на сервер в виде файла VCF в Android - PullRequest
0 голосов
/ 11 марта 2019

Я пытаюсь преобразовать мои контакты в файл .vcf в Android, но он выдает ошибку и не может экспортировать контакты.

Он выдает ошибку, он переходит в блок catch и выдает:

java.lang.NegativeArraySizeException: -1

Я хочу экспортировать все свои контакты на сервер, используя файл vcf

public void getVCF() {
 final String vfile = "Contacts.vcf";
 Cursor phones = mContext.getContentResolver().query(
  ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
  null, null, null);
 phones.moveToFirst();
 for (int i = 0; i < phones.getCount(); i++) {
  String lookupKey = phones.getString(phones
   .getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY));
  Uri uri = Uri.withAppendedPath(
   ContactsContract.Contacts.CONTENT_VCARD_URI,
   lookupKey);
  AssetFileDescriptor fd;
  try {
   fd = mContext.getContentResolver().openAssetFileDescriptor(uri, "r");
   FileInputStream fis = fd.createInputStream();
   byte[] buf = new byte[(int) fd.getDeclaredLength()];
   fis.read(buf);
   String VCard = new String(buf);
   String path = Environment.getExternalStorageDirectory()
    .toString() + File.separator + vfile;
   FileOutputStream mFileOutputStream = new FileOutputStream(path,
    true);
   mFileOutputStream.write(VCard.toString().getBytes());
   phones.moveToNext();
   filevcf = new File(path);
   Log.d("Vcard", VCard);
  } catch (Exception e1) {
   // TODO Auto-generated catch block
   e1.printStackTrace();
  }
 }
}
...