2010-12-01 9 views
1

、私は基本的な問題に直面していますが、私は私を助けるために ために、任意のチュートリアルを見つけることができませんでした...接触APIの問題

私は、バックアップの連絡先オプションの並べ替えを使用してアプリケーションを書いています。私は 私のアプリケーションが1.5から2.2までAndroidの携帯電話のために働くことを望みます

私は1.5、1.6のための1つ、新しいAPIバージョンのための のContactApiの2つの実装を書いています。

ここに私が直面している問題のリストがあります。

新しいAPIで、何もありません。すべて正常に動作し、連絡先をバックアップするとうまくいきます。

しかし、私はいくつかの件のデータをバックアップすることができないんだけど、古いAPIを使用した:

  • メールDATAS(読むことができますが、ない節約できる)
  • IM件のデータ(読むことができますが、ありませんここで

))最初のノートを読むことができる

  • 注意を(保存することができ、多くのノートならば、私は、バックアップのための 同じ事をDATASを失ったが、私が使っているコードです:

    ======= ======= EMAIL

    private ArrayList<Email> getEmailAddresses(String id) { 
          ArrayList<Email> emails = new ArrayList<Email>(); 
          Cursor emailCur = this.contentResolver.query(Contacts.ContactMethods.CONTENT_EMAIL_URI, null, Contacts.ContactMethods.PERSON_ID + " = ?", new String[] { id }, null); 
          Email email = null; 
          while (emailCur.moveToNext()) { 
            // This would allow you get several email addresses 
            email = new Email(); 
            email.setData(emailCur.getString(emailCur.getColumnIndex(Contacts.ContactMe thods.DATA))); 
            email.setType(emailCur.getInt(emailCur.getColumnIndex(Contacts.ContactMetho ds.TYPE))); 
            email.setLabel(emailCur.getString(emailCur.getColumnIndex(Contacts.PeopleCo lumns.NAME))); 
            emails.add(email); 
          } 
          emailCur.close(); 
          return emails; 
        } 
    private void saveEmailAddresses(ContentUris contactUri, List<Email> emailList, String id) { 
          if (emailList != null && emailList.size() > 0) { 
            ContentValues values = null; 
            ContentValues[] valueArray = new ContentValues[emailList.size()]; 
            int i = 0; 
            for (Email email : emailList) { 
              values = new ContentValues(); 
              values.put(Contacts.ContactMethods.PERSON_ID, id); // 
              values.put(Contacts.ContactMethods.KIND, Contacts.KIND_EMAIL); // 
              values.put(Contacts.ContactMethods.DATA, email.getData()); // 
              values.put(Contacts.ContactMethods.TYPE, email.getType()); // 
              values.put(Contacts.PeopleColumns.NAME, email.getLabel()); // 
              valueArray[i] = values; 
              i++; 
            } 
            contentResolver.bulkInsert(Contacts.ContactMethods.CONTENT_EMAIL_URI, valueArray); 
          } 
        } 
    

    ======== IMアドレス=============

    private ArrayList<IM> getIM(Cursor cur, String id) { 
           ArrayList<IM> imList = new ArrayList<IM>(); 
           String where = Contacts.ContactMethods.PERSON_ID + " = ? AND " +  Contacts.ContactMethods.KIND + " = ?"; 
           String[] whereParameters = new String[] { id, 
    String.valueOf(Contacts.KIND_IM) }; 
           Cursor imCur = 
    this.contentResolver.query(Contacts.ContactMethods.CONTENT_URI, null, 
    where, whereParameters, null); 
           IM im = null; 
           while (imCur.moveToNext()) { 
             try { 
               String imName = 
    imCur.getString(imCur.getColumnIndex(Contacts.ContactMethodsColumns.DATA)); 
                 im = new IM(); 
                 im.setName(imName); 
    im.setType(imCur.getInt(imCur.getColumnIndex(Contacts.ContactMethodsColumns .TYPE))); 
    im.setProtocol(cur.getString(imCur.getColumnIndex(Contacts.ContactMethods.A UX_DATA))); 
                 imList.add(im); 
             } catch (Exception e) { 
               Log.e(where, "Error im : ", e); 
             } 
           } 
           imCur.close(); 
           return imList; 
         } 
         private void saveIM(List<IM> imList, String id) { 
           if (imList != null && imList.size() > 0) { 
             ContentValues values = null; 
             ContentValues[] valueArray = new ContentValues[imList.size()]; 
             int i = 0; 
             for (IM im : imList) { 
               values = new ContentValues(); 
               values.put(Contacts.ContactMethods.PERSON_ID, id); // 
               values.put(Contacts.ContactMethods.KIND, Contacts.KIND_IM); // 
               values.put(Contacts.ContactMethodsColumns.DATA, im.getName()); // 
               values.put(Contacts.ContactMethods.AUX_DATA, 
    ContactMethods.encodeCustomImProtocol(im.getProtocol())); // 
               values.put(Contacts.ContactMethodsColumns.TYPE, im.getType()); // 
               valueArray[i] = values; 
               i++; 
             } 
             contentResolver.bulkInsert(Contacts.ContactMethods.CONTENT_URI, 
    valueArray); 
           } 
         } 
    

    ==========注意=======

    私はすべてのノートを取得する方法は考えていますか?

    誰かがこれを手伝ってくれますか?

  • 答えて

    0
    public static HashMap Parse(String XML, String Tag, ArrayList<String> NodesList) 
    {   
        HashMap v = new HashMap();   
        try 
        { 
         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
         DocumentBuilder db = dbf.newDocumentBuilder(); 
         InputSource is = new InputSource(); 
         is.setCharacterStream(new StringReader(XML)); 
         Document doc = db.parse(is); 
         doc.getDocumentElement().normalize();    
         NodeList nodeLst = doc.getElementsByTagName(Tag);    
         nodeCount = nodeLst.getLength(); 
         for (int s = 0; s < nodeCount; s++) 
         { 
          Node fstNode = nodeLst.item(s); 
    
          if (fstNode.getNodeType() == Node.ELEMENT_NODE) 
          {     
          Element fstElmnt = (Element) fstNode; 
    
          for(String nodeName : NodesList) 
          { 
           NodeList fstNmElmntLst = fstElmnt.getElementsByTagName(nodeName); 
           Element fstNmElmnt = (Element) fstNmElmntLst.item(0); 
           NodeList fstNm = fstNmElmnt.getChildNodes(); 
           try { 
            String NodeValue = ((Node) fstNm.item(0)).getNodeValue().toString().trim(); 
            if(NodeValue !=null) 
             v.put(nodeName + s, NodeValue); 
           } 
           catch(Exception e) { 
            v.put(nodeName + s, ""); 
           } 
          } 
    
          } 
         } 
        } 
        catch (Exception e) 
        { 
         //e.printStackTrace(); 
        } 
    
        return v; 
    }