这里我附加了我编写的代码,用于将msg发送给我从电话簿中选择的用户
addcontact.setOnClickListener(new View.OnClickListener() { public void onClick(View V) { Intent ContactPickerIntent = new Intent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI); startActivityForResult(ContactPickerIntent, CONTACT_PICKER_RESULT); } } );
这将打开联系人列表…………………………
protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { switch (requestCode) { case CONTACT_PICKER_RESULT: Cursor cursor=null; try { Uri result = data.getData(); Log.v(DEBUG_TAG, "Got a contact result: " + result.toString()); // get the contact id from the Uri String id = result.getLastPathSegment(); // query for everything contact number cursor = getContentResolver().query( Phone.CONTENT_URI, null, Phone.CONTACT_ID + "=?", new String[]{id}, null); cursor.moveToFirst(); int phoneIdx = cursor.getColumnIndex(Phone.DATA); if (cursor.moveToFirst()) { phonenofromcontact = cursor.getString(phoneIdx); finallistofnumberstosendmsg +=","+phonenofromcontact; Log.v(DEBUG_TAG, "Got email: " + phonenofromcontact); } else { Log.w(DEBUG_TAG, "No results"); } } catch(Exception e) { Log.e(DEBUG_TAG, "Failed to get contact number", e); } finally { if (cursor != null) { cursor.close(); } } phonePhoneno= (EditText)findViewById(R.id.Phonenofromcontact); phonePhoneno.setText(finallistofnumberstosendmsg); //phonePhoneno.setText(phonenofromcontact); if(phonenofromcontact.length()==0) { Toast.makeText(this, "No contact number found for this contact", Toast.LENGTH_LONG).show(); } break; } } else { Log.w(DEBUG_TAG, "Warning: activity result not ok"); } }
这就是你如何处理和从电话簿中获取电话号码………………………………. ………………………..
现在调用send msg以及要设置的数字和消息列表..
private void sendSMS(String phoneNumber, String message) { String SENT = "SMS_SENT"; String DELIVERED = "SMS_DELIVERED"; PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent(SENT), 0); PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0, new Intent(DELIVERED), 0); //---when the SMS has been sent--- registerReceiver(new BroadcastReceiver(){ @Override public void onReceive(Context arg0, Intent arg1) { switch (getResultCode()) { case Activity.RESULT_OK: Toast.makeText(getBaseContext(), "SMS sent", Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_GENERIC_FAILURE: Toast.makeText(getBaseContext(), "Generic failure", Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_NO_SERVICE: Toast.makeText(getBaseContext(), "No service", Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_NULL_PDU: Toast.makeText(getBaseContext(), "Null PDU", Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_RADIO_OFF: Toast.makeText(getBaseContext(), "Radio off", Toast.LENGTH_SHORT).show(); break; } } },new IntentFilter(SENT)); //---when the SMS has been delivered--- registerReceiver(new BroadcastReceiver(){ @Override public void onReceive(Context arg0, Intent arg1) { switch (getResultCode()) { case Activity.RESULT_OK: Toast.makeText(getBaseContext(), "SMS delivered", Toast.LENGTH_SHORT).show(); break; case Activity.RESULT_CANCELED: Toast.makeText(getBaseContext(), "SMS not delivered", Toast.LENGTH_SHORT).show(); break; } } }, new IntentFilter(DELIVERED)); SmsManager sms = SmsManager.getDefault(); sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI); }
这将发送消息……………………………..需要接收器才能收到广播的消息
public class SmsReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //---get the SMS message passed in--- Bundle bundle = intent.getExtras(); SmsMessage[] msgs = null; String str = ""; if (bundle != null) { //---retrieve the SMS message received--- Object[] pdus = (Object[]) bundle.get("pdus"); msgs = new SmsMessage[pdus.length]; for (int i=0; i
你也可以尝试一下。 它对我有用..谢谢