I've been trying to use the following code to export contacts as a vcf file:
b5.setOnClickListener(new
OnClickListener()
{
public void onClick(View v){
getVCF();
}
public static void getVCF()
{
final String vfile = "POContactsRestore.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();
Log.d("Vcard", VCard);
}
catch (Exception e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
The problem is that this throws me a "nullpointerexception" and honestly I don't really understand the debugger. Please help me.
How can I fix it?
EDIT1:
I'm not sure of what exactly should say the Logcat, but all errors look like this:
com.android.exchange Strict Mode null
com.android.exchange Strict Mode android.app.ServiceConnectionLeaked: Service com.android exchange
The Debug window highlights this line:
Cursor phones = mContext.genContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
Thanks for your help.
EDIT2:
OK debug window says:
Thread[<1>main](Suspended (exception NullPointerException))
MainActivity$1.getVCF()line:71
MainActivity$1.onClick(View)line:63
The LogCat window does not show anything but the errors I've posted before.