【问题标题】:Send SMS to a specific contact向特定联系人发送短信
【发布时间】:2018-03-07 13:05:15
【问题描述】:

我创建了一个按钮,点击后会显示电话联系人列表,我希望从列表中选择一个联系人并向他发送消息。

我的应用程序允许您通过手动输入我要链接的号码来发送消息,然后通过“联系人”按钮选择下一个联系人并发送短信

有什么想法吗?

编辑:这里是联系代码

@Override public void onActivityResult(int reqCode, int resultCode, Intent data){ super.onActivityResult(reqCode, resultCode, data);

    switch(reqCode)
    {
        case (PICK_CONTACT):
            if (resultCode == Activity.RESULT_OK)
            {
                Uri contactData = data.getData();

                Cursor c = getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, null, null, null);
                if (c.moveToFirst())
                {
                    String id = c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts._ID));

                    String hasPhone =
                            c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));

                    if (hasPhone.equalsIgnoreCase("1"))
                    {
                        Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,
                                ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ id,null, null);
                        phones.moveToFirst();
                        String cNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                        // Toast.makeText(getApplicationContext(), cNumber, Toast.LENGTH_SHORT).show();

                    }
                }
            }
    }
}

H

contact = (Button) findViewById(R.id.BoutonContact);

        contact.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
                startActivityForResult(intent, PICK_CONTACT);


            }
        });

我的发送短信方法:

受保护的 void envoiSMS() { Log.i("使者短信", "");

String phoneNum = txtPhoneNum.getText().toString();
String message = txtMessage.getText().toString();
try {
    SmsManager smsManager = SmsManager.getDefault();
    smsManager.sendTextMessage(phoneNum, null, message, null, null);
    Toast.makeText(getApplicationContext(), "SMS envoyé", Toast.LENGTH_LONG).show();

} catch (Exception e) {
    Toast.makeText(getApplicationContext(), "Echec à l'envoi du SMS veuillez réessayer", Toast.LENGTH_LONG).show();
    e.printStackTrace();
}

}

【问题讨论】:

  • 您如何存储您的联系人?如果它们存储为对象,只需将联系人的电话号码添加为对象中的一个字段,然后在用户选择特定联系人后发送短信时使用该字段。
  • 我只是不知道如何存储选择的下一个联系人并随后用于发送短信
  • 就像@issathink 建议的那样。只需将电话号码存储在对象中,然后按照他的示例调用 getPhoneNumber 方法,该方法从对象中检索号码,然后将其传递给您的 sms 方法

标签: android


【解决方案1】:

试试这个:

@Override
public void onItemClick(AdapterView<?>adapter,View v, int position){

  ItemClicked item = adapter.getItem(position);

  Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("sms:" + item.getPhoneNumber()));

  intent.putExtra("sms_body", item.getMessageBody());
  startActivity(intent);

}

编辑:

@Override public void onActivityResult(int reqCode, int resultCode, Intent data){ super.onActivityResult(reqCode, resultCode, data);

switch(reqCode)
{
    case (PICK_CONTACT):
        if (resultCode == Activity.RESULT_OK)
        {
            Uri contactData = data.getData();

            Cursor c = getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, null, null, null);
            if (c.moveToFirst())
            {
                String id = c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts._ID));

                String hasPhone =
                        c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));

                if (hasPhone.equalsIgnoreCase("1"))
                {
                    Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,
                            ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ id,null, null);
                    phones.moveToFirst();
                    String cNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                    // Toast.makeText(getApplicationContext(), cNumber, Toast.LENGTH_SHORT).show();
                    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("sms:" + cNumber));
                    startActivity(intent);

                }
            }
        }
}

}

【讨论】:

  • 谢谢,我刚刚将此代码添加到 MainActivity.java 并告诉我“无法解析符号”ItemClicked
  • “ItemClicked”是指您的 ListView 使用的对象类型。
  • 只需将@issathink 提供的代码添加到您的onClick 方法中
  • 谢谢和抱歉,伙计们。但是当我将您编辑的代码添加到方法 onActivityResult 时,告诉我无法解析行中的符号项:Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("sms: " + item.getPhoneNumber()));我必须用什么替换它?编辑:我已经编辑了我的第一篇文章以向您展示更多内容
  • 抱歉是我的错,现在应该可以了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-04
  • 2013-09-24
  • 2014-02-16
  • 1970-01-01
  • 2011-07-25
相关资源
最近更新 更多