Android 如何向单个号码发送多条短信

Android 如何向单个号码发送多条短信,android,sms,Android,Sms,我想使用复选框选择发送多条短信。只有选定短信的内容,即其正文需要发送新的邮件正文至#121,我已预先定义了该正文,但以下代码显示,无论我是否选择否,它都会发送完整的收件箱邮件:121 主要活动代码 public class MainActivity extends Activity implements OnItemClickListener, OnClickListener{ Button send; ListView listViewSMS; Cursor cursor; SMSListA

我想使用复选框选择发送多条短信。只有选定短信的内容,即其正文需要发送新的邮件正文至#121,我已预先定义了该正文,但以下代码显示,无论我是否选择否,它都会发送完整的收件箱邮件:121

主要活动代码

public class MainActivity extends Activity implements OnItemClickListener, OnClickListener{

Button send;
ListView listViewSMS;
Cursor cursor;
SMSListAdapter smsListAdapter;
Context context;
ArrayAdapter<SMSListModel> adapter;
List<SMSListModel> list = new ArrayList<SMSListModel>();
TextView textViewSMSSender, textViewSMSBody;
int i;
int count = 0;
@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    context=this;
    listViewSMS=(ListView)findViewById(R.id.lvSMS);
    send = (Button)findViewById(R.id.send);
    send = (Button)findViewById(R.id.send);
    textViewSMSSender=(TextView)findViewById(R.id.tvSMSSend);
    textViewSMSBody=(TextView)findViewById(R.id.tvSMSBody);
    cursor = getContentResolver().query(Uri.parse("content://sms/inbox"), null, null, null, null);
    smsListAdapter = new SMSListAdapter(this,getModel());
    listViewSMS.setAdapter(smsListAdapter);
    listViewSMS.setOnItemClickListener(this);
}
@Override
public void onItemClick(AdapterView<?> arg0, View v, int arg2, long arg3) {
    TextView label = (TextView) v.getTag(R.id.tvSMSSend);
    CheckBox checkbox = (CheckBox) v.getTag(R.id.cbSelect);
    Toast.makeText(v.getContext(), label.getText().toString()+" "+isCheckedOrNot(checkbox), Toast.LENGTH_LONG).show();      
}

private String isCheckedOrNot(CheckBox checkbox) {
    if(checkbox.isChecked())
        return "is checked";
    else
        return "is not checked";
}

private List<SMSListModel> getModel() {

    if(cursor.getCount()>0){
        for(i=0;i<cursor.getCount();i++){
            if(cursor.moveToPosition(i)){
                list.add(new SMSListModel(cursor.getString(cursor.getColumnIndex("address")),cursor.getString(cursor.getColumnIndex("body"))));
            }
        }
    }

    return list;
}
@Override
public void onClick(View v) {
   
    if(v == send ){
        mDialog();
    }
    }
       
public void mDialog(){
     // Show The Dialog with Selected SMS 
     AlertDialog dialog = new AlertDialog.Builder(context).create();
     dialog.setTitle("Message Report");
     dialog.setIcon(android.R.drawable.ic_dialog_info);
     dialog.setMessage("Count : "+textViewSMSBody);
     dialog.setButton(DialogInterface.BUTTON_POSITIVE, "ok",
             new DialogInterface.OnClickListener() {
         public void onClick(DialogInterface dialog, int which) 
         {
             String phoneNo = "121";
             if(list.size()>0){
                 for(i=0;i<list.size();i++){
                     if(list.get(i).isSelected()){
                         
                         try{
                             SmsManager smsManager = SmsManager.getDefault();
                             StringBuilder builder = new StringBuilder();
                             for(SMSListModel p: list){
                                 builder.append(p.toString());
                                 builder.append('\n');
                             }
                            String sms = builder.toString();
                             smsManager.sendTextMessage(phoneNo, null, sms, null, null);
                          Toast.makeText(getApplicationContext(), "SMS Reported to 121!",Toast.LENGTH_LONG).show();
                         }                           
                         catch (Exception e){
                             Toast.makeText(getApplicationContext(),"SMS faild, please try again later!",Toast.LENGTH_LONG).show();
                             e.printStackTrace();
                         }
                         dialog.dismiss();
                 }
              }
            }
         }
     });
    
     dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", 
            new DialogInterface.OnClickListener() {
                    
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(getApplicationContext(), "SMS not sent",Toast.LENGTH_LONG).show();
                        dialog.dismiss();
                        
                    }
                });
     dialog.show();
        
}}

我发现项目单击侦听器有问题

替换你的方法。我希望它能起作用:

@Override
public void onItemClick(AdapterView<?> arg0, View v, int arg2, long arg3) {
    TextView label = (TextView) v.getTag(R.id.tvSMSSend);
    CheckBox checkbox = (CheckBox) v.getTag(R.id.cbSelect);
    Toast.makeText(v.getContext(),
            label.getText().toString() + " " + isCheckedOrNot(checkbox),
            Toast.LENGTH_LONG).show();
    list.get(arg2).setSelected(!list.get(arg2).isSelected());

}
@覆盖
公共视图单击(AdapterView arg0,视图v,内部arg2,长arg3){
TextView标签=(TextView)v.getTag(R.id.tvSMSSend);
CheckBox=(CheckBox)v.getTag(R.id.cbSelect);
Toast.makeText(v.getContext(),
label.getText().toString()+“”+isCheckedOrNot(复选框),
Toast.LENGTH_LONG).show();
list.get(arg2).setSelected(!list.get(arg2).isSelected());
}

它仍然发送完整的收件箱消息
@Override
public void onItemClick(AdapterView<?> arg0, View v, int arg2, long arg3) {
    TextView label = (TextView) v.getTag(R.id.tvSMSSend);
    CheckBox checkbox = (CheckBox) v.getTag(R.id.cbSelect);
    Toast.makeText(v.getContext(),
            label.getText().toString() + " " + isCheckedOrNot(checkbox),
            Toast.LENGTH_LONG).show();
    list.get(arg2).setSelected(!list.get(arg2).isSelected());

}