我可以自动发送短信(没有用户需要批准)

我对Android比较陌生。 我试图从Android应用程序发送短信。 当使用SMS Intent时,SMS窗口打开,用户需要批准SMS并发送。

有没有一种方法可以自动发送短信,而无需用户确认?

谢谢,莉奥

Solutions Collecting From Web of "我可以自动发送短信(没有用户需要批准)"

您可以使用此方法发送短信。 如果短信号大于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); } } } 

更新

piSend和piDelivered是Pending Intent它们可以在方法完成发送短信时触发广播

这里是广播接收器的示例代码

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

如果你的应用程序在AndroidManifest.xml中有以下权限

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

您可以发送尽可能多的短信,只要你想

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

这就是全部。

是的,您可以使用SmsManager发送短信。 请记住,您的应用程序需要SEND_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"/>