1

私がやりたいのは、EditText を用意することです。そこに名前を入力できます (これまでに入力した名前に対応する名前のフィルター処理されたリストが表示されます)。最後に連絡先を選択します。EditText には、選択した名前が表示されますが、選択した連絡先に対応する番号にメッセージ (SMS) が送信されます。

ここに私のコードがありますが、これは完全ではありません: もちろん、AndroidManifest ファイルにもいくつかの設定があります。

public class SendSMSActivity extends Activity {

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. name メンバーと phone メンバーを持つ独自の Contact クラスを作成します。
  2. 連絡先リストでカーソルを反復処理し、反復ごとに、連絡先リストから受け取った名前と電話番号を使用して新しい連絡先を作成します。
  3. 新しい連絡先を作成すると、リストに保存されます(つまり、次のようなリストです:List<Contact> contacts = new ArrayList<Contact>(); )
  4. このリストはリスト アダプターに保存されます
  5. editTextを入力すると、同じ文字を含む連絡先があるかどうかを確認します
于 2013-05-04T19:15:56.113 に答える