2
私はvCard文字列を取得できましたが、バージョン2.1にあります。 問題は、私はAPIにvCard 3.0が必要だということです。 ターゲットに簡単にアプローチできますか?または、手動でストリングを編集する必要がありますか?vCard 3.0をエクスポートするにはどうすればよいですか?
マイコード:
private void getVcardString() {
// TODO: 07.11.2017 Fix vCard Version
vCardArray = new ArrayList<>();
cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
null, null, null);
if (cursor != null && cursor.getCount() > 0) {
cursor.moveToFirst();
for (int i = 0; i < cursor.getCount(); i++) {
String lookupKey = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY));
Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_VCARD_URI, lookupKey);
AssetFileDescriptor fd;
try {
fd = this.getContentResolver().openAssetFileDescriptor(uri, "r");
FileInputStream fis = fd.createInputStream();
byte[] buf = new byte[(int) fd.getDeclaredLength()];
fis.read(buf);
String vCard = new String(buf);
vCardArray.add(vCard);
Log.println(Log.ASSERT, "Vcard", vCard);
} catch (Exception e1) {
e1.printStackTrace();
}
cursor.moveToNext();
}
} else {
Log.d("vCardERROR", "No Contacts in Your Phone");
}
}
APIはJSONと連携するので、基本的にはBase64でコレクションのtoStringをエンコードし、JSONObjectに入れてAPIに送信するという問題があります。したがって、Content-Typeはapplication/jsonである必要があります – alisheikh