2012-03-13 6 views
0

あなたはこのコードを別の場所でも見たに違いありませんが、明らかにこの例外に対する答えはありません。集約連絡先は自動的に追加されますか?

編集:ここでは、vcardioによって連絡先を復元する方法を見つけることができました。これはITです!

は私がうまく動作するようになっている、次のdoImport()メソッドを使用しているdb.Iの連絡先へのvCardから連絡先を復元するために使用Android用vCardIO APIを利用しながらこれを得たが、それはイマイチ!

public void doImport(final String fileName, final boolean replace) { 
    try { 

     File vcfFile = new File(fileName); 

     final BufferedReader vcfBuffer = new BufferedReader(new FileReader(fileName),1048576); 

     final long maxlen = vcfFile.length(); 

     // Start lengthy operation in a background thread 

     long importStatus = 0; 

       SQLiteDatabase db = mOpenHelper.getWritableDatabase(); 
       SQLiteStatement querySyncId = db.compileStatement("SELECT " + SYNCID + " FROM " + SYNCDATA_TABLE_NAME + " WHERE " + PERSONID + "=?"); 
       SQLiteStatement queryPersonId = db.compileStatement("SELECT " + PERSONID + " FROM " + SYNCDATA_TABLE_NAME + " WHERE " + SYNCID + "=?"); 
       SQLiteStatement insertSyncId = db.compileStatement("INSERT INTO " + SYNCDATA_TABLE_NAME + " (" + PERSONID + "," + SYNCID + ") VALUES (?,?)"); 
       db.close(); 
       Contact parseContact = new Contact(querySyncId, queryPersonId, insertSyncId); 
       String popa=""; 
       popa=parseContact.getContent(); 
       try { 
        long ret = 0; 
        do { 

         ret = parseContact.parseVCard(vcfBuffer); 
         //this is the snippet line which has the potential to beat the blues out of any programmer,always throwing an exception! 
         parseContact.addContact(CO, 0, true); 
} while (ret > 0); 

        db.close(); 


       } catch (Exception e) { 

        Toast.makeText(CO,"NO "+e.getMessage()+"-"+e.getLocalizedMessage()+"-"+e.toString(), Toast.LENGTH_SHORT).show(); 

       } 
+0

まいらplzはちょうどこのように歩いていけない!!!! – Nezam

+0

申し訳ありません..私はvCardIOで働いたことがありません –

答えて

0

おかげで、ないthanks.Iはそれを自分自身を管理できず、Alhumdulillah.Make

doImportを次のように変更();

VCardIOの方法:

 public void doImport(final String fileName, final boolean replace) { 
    try { 

     File vcfFile = new File(fileName); 

     final BufferedReader vcfBuffer = new BufferedReader(new FileReader(fileName),1048576); 

     final long maxlen = vcfFile.length(); 


     long importStatus = 0; 

       SQLiteDatabase db = mOpenHelper.getWritableDatabase(); 
       SQLiteStatement querySyncId = db.compileStatement("SELECT " + SYNCID + " FROM " + SYNCDATA_TABLE_NAME + " WHERE " + PERSONID + "=?"); 
       SQLiteStatement queryPersonId = db.compileStatement("SELECT " + PERSONID + " FROM " + SYNCDATA_TABLE_NAME + " WHERE " + SYNCID + "=?"); 
       SQLiteStatement insertSyncId = db.compileStatement("INSERT INTO " + SYNCDATA_TABLE_NAME + " (" + PERSONID + "," + SYNCID + ") VALUES (?,?)"); 
       db.close(); 
       Contact parseContact = new Contact(querySyncId, queryPersonId, insertSyncId); 
       String popa=""; 
       popa=parseContact.getContent(); 
       try { 
        long ret = 0; 
        do { 

         ret = parseContact.parseVCard(vcfBuffer); 

         /* GOOGLE CODE IS JUST THIS ON LINE WHICH AIN'T WORKING!! 
         parseContact.addContact(CO, 0, true); */ 

         if (ret >= 0) { 
          String DisplayName = parseContact.displayName; 


          List<RowData> MobileNumbers=parseContact.phones; 
          List <RowData> Addresses = parseContact.addrs; 
          List <RowData> IMs = parseContact.ims; 
          List <OrgData> Orgs = parseContact.orgs; 
          String Notes = parseContact.notes; 
          byte[] dp = parseContact.photo; 
          String BirthDay = parseContact.birthday; 


          ContentResolver cr = CO.getContentResolver(); 

          List<RowData> mails=parseContact.emails; 

          try 
           { 


           // ADDING NAME 
          ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
          int rawContactInsertIndex = ops.size(); 

          ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI) 
            .withValue(RawContacts.ACCOUNT_TYPE, null) 
            .withValue(RawContacts.ACCOUNT_NAME, null).build()); 
          ops.add(ContentProviderOperation 
            .newInsert(ContactsContract.Data.CONTENT_URI) 
            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID,rawContactInsertIndex) 
            .withValue(ContactsContract.Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE) 
            .withValue(StructuredName.DISPLAY_NAME, DisplayName) // Name of the person 
            .build()); 

          //ADDING PHONES 
          for(RowData l : MobileNumbers) 
          { 

           { 
          ops.add(ContentProviderOperation 
            .newInsert(ContactsContract.Data.CONTENT_URI) 
            .withValueBackReference(
              ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 
            .withValue(ContactsContract.Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE) 

            .withValue(Phone.NUMBER,l.data) 
            .withValue(Phone.TYPE,l.type).build()); 
           } 

          } 
          //ADDING MAILS 
          for(RowData a :mails) 
          { 

           { 
            ops.add(ContentProviderOperation 
             .newInsert(ContactsContract.Data.CONTENT_URI) 
             .withValueBackReference(
               ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 

             .withValue(ContactsContract.Data.MIMETYPE, Email.CONTENT_ITEM_TYPE) 

             .withValue(Email.DATA,a.data) 
             .withValue(Email.TYPE, a.type).build()); 
           } 


          } 

          //ADDING ADDRESSES 

          for(RowData add :Addresses) 
          { 
           ops.add(ContentProviderOperation 
             .newInsert(ContactsContract.Data.CONTENT_URI) 
             .withValueBackReference(
               ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 


             .withValue(ContactsContract.Data.MIMETYPE,StructuredPostal.CONTENT_ITEM_TYPE) 

             .withValue(StructuredPostal.DATA,add.data) 
             .withValue(StructuredPostal.TYPE, add.type).build()); 
          } 

          //ADDING ORGANISATIONS 


          for(OrgData org :Orgs) 
          { 
           ops.add(ContentProviderOperation 
             .newInsert(ContactsContract.Data.CONTENT_URI) 
             .withValueBackReference(
               ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 


             .withValue(ContactsContract.Data.MIMETYPE,Organization.CONTENT_ITEM_TYPE) 

             .withValue(Organization.DATA,org.company) 
             .withValue(Organization.TYPE, org.type) 
             .withValue(Organization.TITLE, org.title) 
             .withValue(Organization.LABEL, org.customLabel) 

             .build()); 
          } 

          //ADDING IMs 

          for(RowData IM :IMs) 
          { 
           ops.add(ContentProviderOperation 
             .newInsert(ContactsContract.Data.CONTENT_URI) 
             .withValueBackReference(
               ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 

             .withValue(ContactsContract.Data.MIMETYPE,Im.CONTENT_ITEM_TYPE) 

             .withValue(Im.DATA,IM.data) 
             .withValue(Im.TYPE, IM.type).build()); 
          } 

          //ADDING NOTES 

          if(Notes!=null && !Notes.equals("")) 
          { 
           ops.add(ContentProviderOperation 
             .newInsert(ContactsContract.Data.CONTENT_URI) 
             .withValueBackReference(
               ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 


             .withValue(ContactsContract.Data.MIMETYPE,Note.CONTENT_ITEM_TYPE) 

             .withValue(Note.NOTE,Notes).build()); 

          } 

          // ADDING PHOTO 

          if(dp!=null) 
          { 
           ops.add(ContentProviderOperation 
             .newInsert(ContactsContract.Data.CONTENT_URI) 
             .withValueBackReference(
               ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 


             .withValue(ContactsContract.Data.MIMETYPE,Photo.CONTENT_ITEM_TYPE) 

             .withValue(Photo.PHOTO,dp).build()); 

          } 

          //ADDING BIRTHDAY 
          if(BirthDay!=null && !BirthDay.equals("")) 
          { 
           ops.add(ContentProviderOperation 
             .newInsert(ContactsContract.Data.CONTENT_URI) 
             .withValueBackReference(
               ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 


             .withValue(ContactsContract.Data.MIMETYPE,CommonDataKinds.Event.CONTENT_ITEM_TYPE) 

             .withValue(CommonDataKinds.Event.START_DATE,BirthDay) 
             .withValue(CommonDataKinds.Event.TYPE,CommonDataKinds.Event.TYPE_BIRTHDAY).build()); // Number of the person 

          } 


                cr.applyBatch(ContactsContract.AUTHORITY, ops); 

               } 
               catch (Exception e) 
               {    
                e.printStackTrace(); 
                Toast.makeText(CO, "Exception: "+e.toString()+"Eebolra:" + e.getMessage(), Toast.LENGTH_SHORT).show(); 
               } 


          importStatus += parseContact.getParseLen(); 


         } 
         db.close(); 
         } while (ret > 0); 

        db.close(); 

       } catch (Exception e) { 

        Toast.makeText(CO,"NO "+e.getMessage()+"-"+e.getLocalizedMessage()+"-"+e.toString(), Toast.LENGTH_SHORT).show(); 

       } 



    } catch (FileNotFoundException e) { 

    } 
} 
関連する問題