1

applyBatch 메서드를 사용하여 연락처에 android app을 삽입하고 있습니다. 내 콘텐츠 리졸버가 null 포인터 예외를 표시합니다.증가하는 방법 연락처 삽입 성능?

public void import_contacts(File paramFile, int paramInt) 
      throws IOException { 
     String[] arrayOfString; 
     i1 = 0; 
     try { 
      FileInputStream localFileInputStream = new FileInputStream(
        paramFile); 
      BufferedReader localBufferedReader = new BufferedReader(
        new InputStreamReader(localFileInputStream)); 
      for (;;) { 
       String str = localBufferedReader.readLine(); 
       if (str == null) { 
        localBufferedReader.close(); 
        mProgress.setProgress(100); 
        mHandler.post(new Runnable() { 
         public void run() { 
          alertdialog_Contact(totalRecToImport 
            + " Contacts were imported Successfully"); 
         } 
        }); 
        return; 
       } 
       i1++; 
       float f = i1; 
       mProgressStatus = ((int) (f/(paramInt/100))); 
       mHandler.post(new Runnable() { 
        public void run() { 
         mProgress.setProgress(mProgressStatus); 
        } 
       }); 
       Log.d("TAG", str); 
       arrayOfString = str.split(";"); 
       if (arrayOfString.length >= 4) { 
        // if (arrayOfString.length != 4) { 
        // break; 
        // } 
//     insertLine(arrayOfString[0], "", arrayOfString[3], "", "", 
//       "", "", "", "", "", "", ""); 
        op_list = new ArrayList<ContentProviderOperation>(); 

        op_list.add(ContentProviderOperation 
          .newInsert(RawContacts.CONTENT_URI) 
          .withValue(RawContacts.ACCOUNT_TYPE, null) 
          .withValue(RawContacts.ACCOUNT_NAME, null).build()); 
        op_list.add(ContentProviderOperation 
          .newInsert(ContactsContract.Data.CONTENT_URI) 
          .withValue(
            ContactsContract.Data.MIMETYPE, 
            ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE) 
          .withValue(
            ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, 
            arrayOfString[0]).build()); 

        op_list.add(ContentProviderOperation 
          .newInsert(Data.CONTENT_URI) 
          .withValue(Phone.MIMETYPE, Phone.CONTENT_ITEM_TYPE) 
          .withValue(Phone.NUMBER, arrayOfString[3]) 
          .withValue(Phone.TYPE, Phone.TYPE_MOBILE) 
          .withValue(Phone.TYPE, Phone.TYPE_WORK).build()); 
        applytobatch++; 
       } 
       if(applytobatch == 100){ 
        applytobatch=0; 
        try { 
          getContentResolver(). 
           applyBatch(ContactsContract.AUTHORITY, op_list); 
         } catch (RemoteException e) { 
         } catch (OperationApplicationException e) { 
         } 
       } 
      } 
     } catch (FileNotFoundException localFileNotFoundException) { 
      for (;;) { 
       Toast.makeText(this, localFileNotFoundException.getMessage(), 0) 
         .show(); 
       localFileNotFoundException.printStackTrace(); 
      } 
     } 
    } 

오류 : 나는 10000 연락처를 삽입하려고

12-20 23:59:21.268: E/AndroidRuntime(3151): FATAL EXCEPTION: Thread-18 
12-20 23:59:21.268: E/AndroidRuntime(3151): java.lang.NullPointerException 
12-20 23:59:21.268: E/AndroidRuntime(3151):  at android.os.Parcel.readException(Parcel.java:1328) 
12-20 23:59:21.268: E/AndroidRuntime(3151):  at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:160) 
12-20 23:59:21.268: E/AndroidRuntime(3151):  at android.database.DatabaseUtils.readExceptionWithOperationApplicationExceptionFromParcel(DatabaseUtils.java:137) 
12-20 23:59:21.268: E/AndroidRuntime(3151):  at android.content.ContentProviderProxy.applyBatch(ContentProviderNative.java:449) 
12-20 23:59:21.268: E/AndroidRuntime(3151):  at android.content.ContentProviderClient.applyBatch(ContentProviderClient.java:95) 
12-20 23:59:21.268: E/AndroidRuntime(3151):  at android.content.ContentResolver.applyBatch(ContentResolver.java:639) 
12-20 23:59:21.268: E/AndroidRuntime(3151):  at com.example.contact_export.MainActivity.import_contacts(MainActivity.java:385) 
12-20 23:59:21.268: E/AndroidRuntime(3151):  at com.example.contact_export.MainActivity$4.run(MainActivity.java:294) 
12-20 23:59:21.268: E/AndroidRuntime(3151):  at java.lang.Thread.run(Thread.java:1019) 

, 내가 따라야 할 어떤 방법을 알려주세요?

답변

0

null 계정 이름 및 계정 유형이있는 연락처를 삽입 할 수 없습니다. 또한 배치 크기를 최대 50으로 유지하십시오. 계정 이름과 유형은 쓰기 가능한 계정이어야하며, 장치에 자신의 계정을 만들어야합니다.