无法在Android中使用SMSManager发送短信

无法在Android中使用SMSManager发送短信,android,sms,sendmessage,Android,Sms,Sendmessage,在我的应用程序中,我不想使用默认的消息发送者。为此,我遵循了以下链接 这个代码也起作用了。但是我从这里发出的信息 代码不会保存在手机的发件箱和收件箱中 我在我的代码中使用短信管理器 SmsManager sms=SmsManager.getDefault(); sms.sendTextMessage(电话号码,空,消息,空,空) 但它不发送短信。请帮助我如何在android中发送短信 -我也试过跟随 PendingEvent sentPI=PendingEvent.getBroadcast(

在我的应用程序中,我不想使用默认的消息发送者。为此,我遵循了以下链接

  • 这个代码也起作用了。但是我从这里发出的信息 代码不会保存在手机的发件箱和收件箱中
  • 我在我的代码中使用短信管理器

    SmsManager sms=SmsManager.getDefault(); sms.sendTextMessage(电话号码,空,消息,空,空)

但它不发送短信。请帮助我如何在android中发送短信 -我也试过跟随 PendingEvent sentPI=PendingEvent.getBroadcast(此,0,新意图( 已发送),0)

它也不起作用。
SMSAPPActivity.java

编辑:

btnSendSMS.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                String message = txtMessage.getText().toString();
                String[] PhnNoArray = new String[2];
                PhnNoArray[0] = "9999999999";
                PhnNoArray[1] = "8888888888";
                // StringTokenizer st = new StringTokenizer(phoneNo, ",");
                smsManager = SmsManager.getDefault();
                for (int i = 0; i < PhnNoArray.length; i++) {
                    smsManager = SmsManager.getDefault();
                        // this is the function that does all the magic
//                      sms.sendTextMessage(phoneNumber, null, msg, pi, null);
                    smsManager.sendTextMessage(PhnNoArray[i], null, message, null,
                            null);
                    Toast.makeText(getBaseContext(), "SMS sent : " + i,
                            Toast.LENGTH_SHORT).show();
                }
}
        });
btnSendSMS.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){
String message=txtMessage.getText().toString();
字符串[]PhnNoArray=新字符串[2];
PhnNoArray[0]=“99999999”;
PhnNoArray[1]=“8888888”;
//StringTokenizer st=新的StringTokenizer(电话号码,“,”);
smsManager=smsmsmanager.getDefault();
for(int i=0;i
请查看编辑并告诉我我做错了什么。tost正在显示,但其他手机无法通过使用此代码接收sms

1)将消息添加到已发送而不是发件箱中,因为发件箱包含假定已发送或处于发送状态的消息

2) 当您发送消息时,在“content://sms/senturi

是什么阻止你将它们存储在数据库中?你还尝试了什么

使用下面的代码发送短信

 smsManager.sendTextMessage(number, null,desc, null, null);

通过使用content://sms/sentURI,您可以将相同的文本消息插入到消息数据库中

只需直接发送它…使用
smsmsmanager
。唯一的问题是用户不会知道它。

我使用以下代码将短消息发送到多个号码,并将发送的短消息保存在消息中

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:
                    ContentValues values = new ContentValues();
                    for (int i = 0; i < MobNumber.size() - 1; i++) {
                        values.put("address", MobNumber.get(i).toString());// txtPhoneNo.getText().toString());
                        values.put("body", MessageText.getText().toString());
                    }
                    getContentResolver().insert(
                            Uri.parse("content://sms/sent"), values);
                    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);
    }
private void sendSMS(字符串电话号码、字符串消息){
String SENT=“SMS_SENT”;
String DELIVERED=“SMS_DELIVERED”;
PendingEvent sentPI=PendingEvent.getBroadcast(此,0,新意图(
已发送),0);
PendingEvent deliveredPI=PendingEvent.getBroadcast(此,0,
新意向(已交付),0);
//---短信发送后---
registerReceiver(新广播接收器(){
@凌驾
公共void onReceive(上下文arg0,意图arg1){
开关(getResultCode()){
案例活动。结果\u正常:
ContentValues=新的ContentValues();
对于(int i=0;i
要向多个号码发送消息,我使用了上述功能:

if (MobNumber != null) {

                for (int i = 0; i < MobNumber.size(); i++) {
                    String message = MessageText.getText().toString();
                    String tempMobileNumber = MobNumber.get(i).toString();
                    sendSMS(tempMobileNumber, message);
                }
if(MobNumber!=null){
对于(int i=0;i
希望这能有所帮助
if (MobNumber != null) {

                for (int i = 0; i < MobNumber.size(); i++) {
                    String message = MessageText.getText().toString();
                    String tempMobileNumber = MobNumber.get(i).toString();
                    sendSMS(tempMobileNumber, message);
                }
import android.os.Bundle;
import android.app.Activity;
import android.telephony.SmsManager;
import android.view.Menu;
import android.view.inputmethod.InputMethodManager;
import android.widget.*;
import android.view.View.OnClickListener;
import android.view.*;


public class MainActivity extends Activity implements OnClickListener{


Button click;
EditText txt;
TextView txtvw;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

click = (Button)findViewById(R.id.button);
txt = (EditText)findViewById(R.id.editText);
txtvw = (TextView)findViewById(R.id.textView1);

click.setOnClickListener(this);
}

@Override
public void onClick(View v){


txt.setText("");
v = this.getCurrentFocus();

try{
    SmsManager sms = SmsManager.getDefault();
    sms.sendTextMessage("8017891398",null,"Sent from Android",null,null);
}
catch(Exception e){
    txtvw.setText("Message not sent!");
}
if(v != null){
    InputMethodManager imm =   (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(v.getWindowToken(),0);
  }

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
   }

}
<uses-permission android:name="android.permission.SEND_SMS" />
public static int getNumberOfActiveSim(Context context) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
                SubscriptionManager subscriptionManager = SubscriptionManager.from(context);
                List<SubscriptionInfo> subscriptionInfo = subscriptionManager.getActiveSubscriptionInfoList();
                return subscriptionInfo != null ? subscriptionInfo.size() : 0;
            }
            TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
            if(telephonyManager != null && telephonyManager.getSimState() == TelephonyManager.SIM_STATE_ABSENT){
                return 1;
            }
            return 0;
        }