次のコードを使用して、連絡先を vcf ファイルとしてエクスポートしようとしています。
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();
}
}
}
問題は、これにより「nullpointerexception」がスローされ、正直なところ、デバッガーがよくわからないことです。私を助けてください。
どうすれば修正できますか?
EDIT1:
Logcat が正確に何を言うべきかはわかりませんが、すべてのエラーは次のようになります。
com.android.exchange Strict Mode null
com.android.exchange Strict Mode android.app.ServiceConnectionLeaked: Service com.android exchange
[デバッグ] ウィンドウで次の行が強調表示されます。
Cursor phones = mContext.genContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
ご協力いただきありがとうございます。
EDIT2:
OK デバッグ ウィンドウには次のように表示されます。
Thread[<1>main](Suspended (exception NullPointerException))
MainActivity$1.getVCF()line:71
MainActivity$1.onClick(View)line:63
LogCat ウィンドウには、以前投稿したエラー以外は何も表示されません。