Can i automatically send SMS (Without the user need to approve)

…衆ロ難τιáo~ 提交于 2019-12-17 08:16:07

问题


I'm rather new to Android. Im trying to send SMS from Android application. When using the SMS Intent the SMS window opens and the user needs to approve the SMS and send it.

Is there a way to automatically send the SMS without the user confirming it?

Thanks, Lior


回答1:


You can use this method to send an sms. If the sms is greater than 160 character then sendMultipartTextMessage is used.

private void sendSms(String phonenumber,String message, boolean isBinary)
{
    SmsManager manager = SmsManager.getDefault();

    PendingIntent piSend = PendingIntent.getBroadcast(this, 0, new Intent(SMS_SENT), 0);
    PendingIntent piDelivered = PendingIntent.getBroadcast(this, 0, new Intent(SMS_DELIVERED), 0);

    if(isBinary)
    {
            byte[] data = new byte[message.length()];

            for(int index=0; index<message.length() && index < MAX_SMS_MESSAGE_LENGTH; ++index)
            {
                    data[index] = (byte)message.charAt(index);
            }

            manager.sendDataMessage(phonenumber, null, (short) SMS_PORT, data,piSend, piDelivered);
    }
    else
    {
            int length = message.length();

            if(length > MAX_SMS_MESSAGE_LENGTH)
            {
                    ArrayList<String> messagelist = manager.divideMessage(message);

                    manager.sendMultipartTextMessage(phonenumber, null, messagelist, null, null);
            }
            else
            {
                    manager.sendTextMessage(phonenumber, null, message, piSend, piDelivered);
            }
    }
}

Update

piSend and piDelivered are Pending Intent They can trigger a broadcast when the method finish sending an SMS

Here is sample code for broadcast receiver

    private BroadcastReceiver receiver = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
            String message = null;

            switch (getResultCode()) {
            case Activity.RESULT_OK:
                message = "Message sent!";
                break;
            case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                message = "Error. Message not sent.";
                break;
            case SmsManager.RESULT_ERROR_NO_SERVICE:
                message = "Error: No service.";
                break;
            case SmsManager.RESULT_ERROR_NULL_PDU:
                message = "Error: Null PDU.";
                break;
            case SmsManager.RESULT_ERROR_RADIO_OFF:
                message = "Error: Radio off.";
                break;
            }

            AppMsg.makeText(SendMessagesWindow.this, message,
                    AppMsg.STYLE_CONFIRM).setLayoutGravity(Gravity.BOTTOM)
                    .show();
      }
  };

and you can register it using below line in your Activity

registerReceiver(receiver, new IntentFilter(SMS_SENT));  // SMS_SENT is a constant

Also don't forget to unregister broadcast in onDestroy

@Override
protected void onDestroy() {
    unregisterReceiver(receiver);
    super.onDestroy();
}



回答2:


If your application has in the AndroidManifest.xml the following permission

<uses-permission android:name="android.permission.SEND_SMS"/>

you can send as many SMS as you want with

SmsManager manager = SmsManager.getDefault();
manager.sendTextMessage(...);

and that is all.




回答3:


Yes, you can send SMS using the SmsManager. Please keep in mind that your application will need the SEND_SMS permission for this to work.




回答4:


Yes, you can send sms without making user interaction...But it works, when user wants to send sms only to a single number.

try {    
    SmsManager.getDefault().sendTextMessage(RecipientNumber, null,    
    "Hello SMS!", null, null);    
} catch (Exception e) {    
    AlertDialog.Builder alertDialogBuilder = new    
    AlertDialog.Builder(this);    
    AlertDialog dialog = alertDialogBuilder.create();    
    dialog.setMessage(e.getMessage());    
    dialog.show();    
}    

Also, add manifest permission....

<uses-permission android:name="android.permission.SEND_SMS"/>


来源:https://stackoverflow.com/questions/7620150/can-i-automatically-send-sms-without-the-user-need-to-approve

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!