1

我想要做的是有一个 EditText,在那里我可以输入一些名称(这样就会出现一个过滤列表,其中的名称与我迄今为止输入的内容相对应)。最后我选择了一个联系人。EditText 应显示我选择的姓名,但会向与所选联系人对应的号码发送消息(短信)。

这是我的代码,不完整:当然我在 AndroidManifest 文件中也有一些设置..

公共类 SendSMSActivity 扩展活动 {

Button buttonSend;
EditText textPhoneNo;
EditText textSMS;
String sms ="";
ListAdapter lAdapter;

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

    buttonSend = (Button) findViewById(R.id.buttonSend);
    textPhoneNo = (EditText) findViewById(R.id.editTextPhoneNo);        
    textPhoneNo.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub
            String srchName = textPhoneNo.getText().toString();
            Cursor cursor = getContentResolver().query(
                    ContactsContract.Contacts.CONTENT_URI,
                    null,
                    ContactsContract.Contacts.HAS_PHONE_NUMBER
                            + " = 1 AND "
                            + ContactsContract.Contacts.DISPLAY_NAME
                            + " like " + "'" + srchName + "%'",
                    null,
                    "UPPER(" + ContactsContract.Contacts.DISPLAY_NAME
                            + ") ASC");
            startManagingCursor(cursor);

            Load(cursor);
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub

        }
    });
    textSMS = (EditText) findViewById(R.id.editTextSMS);

    sms = MainActivityClass.tempSms.toString();
    Log.d("SendSMSActivity", " sms text = " + sms);
    textSMS.setText(sms);
    textSMS.setVisibility(EditText.VISIBLE);

    buttonSend.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            String phoneNo = textPhoneNo.getText().toString();
            //String sms = textSMS.getText().toString();


            try {
                SmsManager smsManager = SmsManager.getDefault();
                smsManager.sendTextMessage(phoneNo, null, sms, null, null);
                Toast.makeText(getApplicationContext(), "SMS Sent!",
                        Toast.LENGTH_LONG).show();
            } catch (Exception e) {
                Toast.makeText(getApplicationContext(),
                        "SMS faild, please try again later!",
                        Toast.LENGTH_LONG).show();
                e.printStackTrace();
            }

        }
});

}

}

4

1 回答 1

0

我不知道您尝试过什么,但此刻我将提出一些想法:

  1. 创建您自己的具有姓名和电话成员的联系人类。
  2. 使用联系人列表中的光标进行迭代,并为每次迭代创建新的联系人,其中包含您从联系人列表中收到的姓名和电话。
  3. 当您创建新联系人时,将其存储到列表中(我的意思是这样的列表:List<Contact> contacts = new ArrayList<Contact>(); )
  4. 此列表将存储在您的列表适配器上
  5. 当您在 editText 上键入时,检查是否有一些包含相同字符的联系人
于 2013-05-04T19:15:56.113 回答