2012-02-28 5 views
0

ドラフトとして保存されたSMSの(TO)アドレスを取得したいとします。 canonical_addressesテーブルのクエリを試しましたが、ログに "canonical_addressesのプロバイダ情報が見つかりませんでした"というメッセージが表示されます。 それから私はアドレスとしてヌルを与えているSMS /ドラフトテーブルのクエリを試してみました。 私のコードで何が間違っていますか?下書きSMSに関する情報はどのように取得する必要がありますか?私は検索しましたが、解決策はありませんでした.Plzは私にいくつかの解決策を提案します。ドラフトのアドレスとして「null」を取得

+0

コードを投稿できますか?それで、私は番号を見つけるのを手伝ってくれるでしょう。ドラフトメッセージのアドレスを見つけるコードをいくつか用意しています –

答えて

0

方法は、ドラフトメッセージに対応するthread_idを取得することです。アドレスを使用して検索するthread_id

public String getPhoneNumbersFromThreadID(Context ctx, String threadId) 
    { 
     //System.out.println(threadId); 
     String phoneList = ""; 
     ArrayList<String> phoneCheckList = new ArrayList<String>(); 

     if(thread2Phone.containsKey(threadId)) 
     { 
      return thread2Phone.get(threadId); 
     } 
     if(threadId == null || threadId.equals("")) 
     { 
      return "No Name"; 
     } 
     if(threadId.trim().length() == 0) return "No Name"; 


     Cursor c = ctx.getContentResolver().query(SMSMainListActivity.Sms_CONTENT_URI, 
       null, 
       "thread_id = '" + threadId + "'", null, "date ASC"); 
     if (c != null) { 
      try { 

       if (c.moveToFirst()) { 


        while (c.isAfterLast() == false) { 
         String num = c.getString(c 
           .getColumnIndex("address")); 
         num = num.replaceAll(";", ","); 

         String[] thisNum = num.split(","); 
         for (int i=0; i<thisNum.length; i++) 
         { 
          phoneCheckList.add(formatNumber(thisNum[i])) ; 
         } 


         c.moveToNext(); 
        } 


       } 
      } catch (Exception e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      }finally 
      { 
       c.close(); 
      } 
     } 


     try { 
      phoneCheckList = removeDuplicates(phoneCheckList); 


      Iterator it = phoneCheckList.iterator(); 

      int i = 0; 
      while (it.hasNext()) { 
       String name = ""+it.next(); 
       //System.out.println("Iterated "+name); 
       if(i==0) 
        phoneList = ""+name; 
       else 
        phoneList += ";"+name; 

       i++; 
      } 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     phoneCheckList.clear(); 
     thread2Phone.put(threadId, phoneList); 
     return phoneList; 
    } 
関連する問題