0

ユーザーから提供されたデータを使用して連絡先を保存しようとしているアクティビティがあります。返された Uri が null であることがわかりました...他の場所で null 値を許可せずにコードの一部をテストしましたが、動作します...しかしここでは機能していないようです。代わりに、NullPointerException が発生します。

FATAL EXCEPTION: main
java.lang.NullPointerException
at com.blutechnologies.scancard.BusinessCard$2.onClick(BusinessCard.java:195)
at android.view.View.performClick(View.java:4240)
at android.view.View$PerformClick.run(View.java:17721)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)

これは、Android ContactsContract API を使用して連絡先を保存するために使用しているコードで、メソッドを使用してバッチ操作を適用します。Uriを返すことを目指しており、これを使用して、インテントを使用して連絡先カードを表示しContentProviderOperationます。ContentProviderResultapplyBatchACTION_VIEW

                btn_save.setOnClickListener(new OnClickListener(){

                @Override
                public void onClick(View view) {

                    Uri uri=saveContacts(sname.getText().toString(), sphone.getText().toString(), sphone2.getText().toString(), semail.getText().toString(), semail2.getText().toString(), sweb.getText().toString(), sweb2.getText().toString(), pathName);
                    Log.d(TAG, "Contact saved with uri "+uri.toString());
                    Intent intent=new Intent(Intent.ACTION_VIEW);
                    intent.setData(uri);
                    startActivity(intent);
                }});
}   

public Uri saveContacts(String name,String mobile,String home_phone,String work_email,String personal_email,String website,String website2,String pathName)
{
    ContentProviderOperation operation=null;
    ContentProviderResult[] res = null;
    ArrayList<ContentProviderOperation> ops=new ArrayList<ContentProviderOperation>();
    Uri uri=null;
    int rawContactId=ops.size();    
    operation=ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI).withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null).withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null).build();
    ops.add(operation);

    if(name!=null)
    {
        operation=ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactId).withValue(ContactsContract.Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE).withValue(StructuredName.DISPLAY_NAME,name).build();
        ops.add(operation);
    }
    if(mobile!=null)
    {   
        operation=ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactId).withValue(ContactsContract.Data.MIMETYPE,Phone.CONTENT_ITEM_TYPE).withValue(Phone.NUMBER,mobile).withValue(Phone.TYPE,Phone.TYPE_MOBILE).build();
        ops.add(operation);
    }
    if(home_phone!=null)
    {
        operation=ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactId).withValue(ContactsContract.Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE).withValue(Phone.NUMBER, home_phone).withValue(Phone.TYPE, Phone.TYPE_HOME).build();
        ops.add(operation);
    }
    if(work_email!=null)
    {   
        operation=ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactId).withValue(ContactsContract.Data.MIMETYPE,Email.CONTENT_ITEM_TYPE).withValue(Email.ADDRESS,work_email).withValue(Email.TYPE,Email.TYPE_WORK).build();
        ops.add(operation);
    }
    if(personal_email!=null)
    {   
        operation=ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID,rawContactId).withValue(ContactsContract.Data.MIMETYPE,Email.CONTENT_ITEM_TYPE).withValue(Email.ADDRESS,personal_email).withValue(Email.TYPE,Email.TYPE_HOME).build();
        ops.add(operation);
    }
    if(website!=null)
    {   
        operation=ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID,rawContactId).withValue(ContactsContract.Data.MIMETYPE,Website.CONTENT_ITEM_TYPE).withValue(Website.URL,website).withValue(Website.TYPE,Website.TYPE_WORK).build();
        ops.add(operation);
    }
    if(website2!=null)
    {   
    operation=ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID,rawContactId).withValue(ContactsContract.Data.MIMETYPE,Website.CONTENT_ITEM_TYPE).withValue(Website.URL,website2).withValue(Website.TYPE,Website.TYPE_HOME).build();
    ops.add(operation);
    }
    if(pathName!=null)
    {
        byte[] imgArray=pathName.getBytes();//Error is here...found it.
        operation=ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID,rawContactId).withValue(ContactsContract.Data.MIMETYPE, Photo.CONTENT_ITEM_TYPE).withValue(Photo.PHOTO,imgArray).build();
        ops.add(operation);
    }
    try {
        res=getContentResolver().applyBatch(ContactsContract.AUTHORITY,ops);
        if(res!=null && res.length>=1)
        {
            uri=res[0].uri;
            Log.d(TAG,"Contact saved successfully");
        }

    } catch (RemoteException e) {
        Log.d(TAG,"Error performing batch operation to insert contact RemoteException",e);
    } catch (OperationApplicationException e) {
        Log.d(TAG,"Error performing batch operations to insert contact OperationApplicationException",e);
    }
    return uri;
} 
4

1 に答える 1