Подтвердить что ты не робот

Могу ли я автоматически отправлять SMS (без необходимости одобрения пользователем)

Я новичок в Android. Я пытаюсь отправить SMS из приложения Android. При использовании SMS Intent открывается окно SMS, и пользователю необходимо одобрить SMS и отправить его.

Есть ли способ автоматически отправлять SMS без подтверждения пользователем?

Спасибо, Лиор

4b9b3361

Ответ 1

Вы можете использовать этот метод для отправки смс. Если sms больше 160 символов, тогда используется sendMultipartTextMessage.

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 и piDelivered находятся в ожидании намерения Они могут инициировать трансляцию, когда метод завершает отправку SMS

Вот пример кода для широковещательного приемника

    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();
      }
  };

и вы можете зарегистрировать его, используя следующую строку в своей деятельности

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

Также не забудьте отменить регистрацию трансляции в onDestroy

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

Ответ 2

Если ваше приложение имеет в AndroidManifest.xml следующее разрешение

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

вы можете отправить столько SMS, сколько хотите,

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

и это все.

Ответ 3

Да, вы можете отправить SMS с помощью SmsManager. Пожалуйста, имейте в виду, что для этого вам понадобится разрешение SEND_SMS.

Ответ 4

Да, вы можете отправлять sms без взаимодействия с пользователем... Но он работает, когда пользователь хочет отправить sms только на один номер.

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();    
}    

Также добавьте разрешение манифеста....

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