2014-01-25 89 views
1

我尝试从电话簿中提取联系人后发送短信。我的消息是固定的(即必须发送),但数量取决于用户的选择。发送短信到联系人列表中的电话号码

String smsNumber = " " ; 
       String smsText = "Hello Please"; 

       Uri uri = Uri.parse("smsto:" + smsNumber); 
       Intent intent = new Intent(Intent.ACTION_SENDTO, uri); 
       intent.putExtra("sms_body", smsText); 

       startActivity(intent); 

我正在使用这个,但我如何发送短信到选定的人/人。

public class ContactList extends ListActivity { 
    /** Called when the activity is first created. */ 

    private ArrayList<contact> contact_list = null; 
    private ProgressDialog mProgressDialog = null; 
    private contactAdapter mContactAdapter = null; 
    private Runnable mViewcontacts = null; 

    private ArrayList<contact> items; 
    boolean[] isChecked; 
    Cursor mCursor; 
    ListView lv; 
    Button b_alert; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 







     contact_list = new ArrayList<contact>(); 
     lv = getListView(); 

     mViewcontacts = new Runnable() { 
      @Override 
      public void run() { 
       getContacts(); 
      } 
     }; 

     Thread thread = new Thread(null, mViewcontacts, "ContactReadBackground"); 
     thread.start(); 
     mProgressDialog = ProgressDialog.show(ContactList.this, 
       "Please Wait...", "Retriving Contacts...", true); 
    } 

    @SuppressWarnings("unused") 
    private void getContacts() { 

     try { 

      String[] projection = new String[] { 
        ContactsContract.Contacts.DISPLAY_NAME, 
        ContactsContract.Contacts.HAS_PHONE_NUMBER, 
        ContactsContract.Contacts._ID }; 

      mCursor = managedQuery(ContactsContract.Contacts.CONTENT_URI, 
        projection, ContactsContract.Contacts.HAS_PHONE_NUMBER 
          + "=?", new String[] { "1" }, 
        ContactsContract.Contacts.DISPLAY_NAME); 

      while (mCursor.moveToNext()) { 
       contact contact = new contact(); 

       String contactId = mCursor.getString(mCursor 
         .getColumnIndex(ContactsContract.Contacts._ID)); 
       contact.setContactName(mCursor.getString(mCursor 
         .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME))); 
       contact_list.add(contact); 
      } 
      isChecked = new boolean[mCursor.getCount()]; 

      for (int i = 0; i < isChecked.length; i++) { 
       isChecked[i] = false; 
      } 

      this.mContactAdapter = new contactAdapter(this, R.layout.listview, 
        contact_list); 
      lv.setAdapter(this.mContactAdapter); 
      mCursor.close(); 

      runOnUiThread(returnRes); 

     } catch (Exception e) { 
      Log.d("getContacts", e.getMessage()); 
     } 
    } 

    public class contactAdapter extends ArrayAdapter<contact> { 

     public contactAdapter(Context context, int textViewResourceId, 
       ArrayList<contact> items1) { 
      super(context, textViewResourceId, items1); 
      items = items1; 
     } 

     @Override 
     public View getView(final int position, View convertView, 
       ViewGroup parent) { 
      ViewHolder mViewHolder; 

      mViewHolder = new ViewHolder(); 
      LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = vi.inflate(R.layout.listview, parent, false); 
      mViewHolder.cb = (CheckBox) convertView.findViewById(R.id.checkBox); 

      convertView.setTag(mViewHolder); 

      if (isChecked[position] == true) 
       mViewHolder.cb.setChecked(true); 
      else 
       mViewHolder.cb.setChecked(false); 
      mViewHolder.cb 
        .setOnCheckedChangeListener(new OnCheckedChangeListener() { 

         @Override 
         public void onCheckedChanged(CompoundButton buttonView, 
           boolean ischecked) { 
          if (buttonView.isChecked()) 
           isChecked[position] = true; 
          else 
           isChecked[position] = false; 
         } 
        }); 

      contact contacts = items.get(position); 
      if (contacts != null) { 
       if (mViewHolder.cb != null) { 
        mViewHolder.cb.setText(contacts.getContactName()); 
       } 
      } 

      return convertView; 
     } 
    } 

    public class ViewHolder { 
     CheckBox cb; 
    } 

    private Runnable returnRes = new Runnable() { 

     @Override 
     public void run() { 
      if (mProgressDialog.isShowing()) 
       mProgressDialog.dismiss(); 
      mContactAdapter.notifyDataSetChanged(); 


     } 
    }; 

} 

回答

1
Intent sendIntent = new Intent(Intent.ACTION_VIEW); 
      sendIntent.putExtra("sms_body", "Check out this photo:it's via abc:https://www.abc.com/"); 
      sendIntent.setType("vnd.android-dir/mms-sms"); 
      sendIntent.putExtra("address",_phoneNo);//here phoneno is String that contain phone no 
      startActivity(sendIntent); 
相关问题