0

次のコードを使用して、連絡先を 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 ウィンドウには、以前投稿したエラー以外は何も表示されません。

4

1 に答える 1