2012-05-15 41 views
6

Tôi đang cố gắng tự động gửi tin nhắn SMS đến một số nhất định khi người dùng nhấn một nút trên màn hình.Android tự động gửi SMS trên nút bấm

Đây là mã của tôi:

Intent smsIntent = new Intent(Intent.ACTION_SENDTO, 
Uri.parse("sms:xxxxxxxxxxx")); 
smsIntent.putExtra("sms_body", "Hello"); 
startActivity(smsIntent); 

xxxxxxx = số điện thoại

tôi có các điều khoản sau đây:

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

Khi tôi bấm nút nó đưa tôi đến một màn hình khác nơi tôi có thể chỉnh sửa văn bản của tôi và nhấn Gửi. Tôi chỉ muốn nó tự động thực hiện quá trình này mà không cần đưa tôi đến màn hình khác. Vì tôi đã định nghĩa thông điệp của mình, tôi chỉ muốn gửi nó đến một số cụ thể.

Và tôi cũng không chắc liệu tôi có đặt số điện thoại cố định vào dòng mã thứ hai hay không. Tôi có phải đặt mã quốc gia của tôi trong đó trước tiên hoặc tôi có thể chỉ cần đặt số điện thoại di động của mình và nó sẽ hoạt động không?

Cảm ơn bạn

+0

Tôi đang làm điều gì đó tương tự TẠI ĐÂY !!! http://stackoverflow.com/questions/14452808/sending-and-receiving-mms-in-android – toobsco42

Trả lời

17

Hãy thử mã này:

String messageToSend = "this is a message"; 
String number = "2121234567"; 

SmsManager.getDefault().sendTextMessage(number, null, messageToSend, null,null); 

Liên quan đến số lượng, bạn cần phải nhập số điện thoại như thể bạn đang gọi nó từ điện thoại hoặc gửi tin nhắn sms trong bình thường cách thức.

+0

Điều này hoạt động hoàn hảo. Cảm ơn bạn rất nhiều! – Alex

+0

Cảm ơn người đàn ông .. nó đã giúp tôi – Noman

+0

@chris Tôi đang sử dụng mã của bạn nhưng không thể nhận được tin nhắn trên số của tôi. bất cứ điều gì tôi đặt là số –

2

Hãy thử điều này

private static final String SMS_SENT_INTENT_FILTER = "com.yourapp.sms_send"; 
private static final String SMS_DELIVERED_INTENT_FILTER = "com.yourapp.sms_delivered"; 

String message = "hey, this is my message"; 

String phnNo = " " //preferable use complete international number 

PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent(
       SMS_SENT_INTENT_FILTER), 0); 
PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0, new Intent(
       SMS_DELIVERED_INTENT_FILTER), 0); 

SmsManager sms = SmsManager.getDefault(); 
sms.sendTextMessage(phnNo, null, message, sentPI, deliveredPI); 
3

Bạn có thể sử dụng xây dựng trong Ý định thêm:

buttonSendSms_intent.setOnClickListener(new Button.OnClickListener(){ 

     @Override 
     public void onClick(View arg0) { 
     // TODO Auto-generated method stub 

     String smsNumber = edittextSmsNumber.getText().toString(); 
     String smsText = edittextSmsText.getText().toString(); 

     Uri uri = Uri.parse("smsto:" + smsNumber); 
     Intent intent = new Intent(Intent.ACTION_SENDTO, uri); 
     intent.putExtra("sms_body", smsText); 
     startActivity(intent); 
     }}); 
+0

Vấn đề với điều này là nếu có nhiều hoạt động có khả năng xử lý hành động 'Intent.ACTION_SENDTO', bộ chọn sẽ được hiển thị để cho phép người dùng chọn ứng dụng để gửi tin nhắn từ (do đó yêu cầu can thiệp của con người trong trường hợp đó) . OP muốn làm điều đó một cách tự động mà không có sự can thiệp của con người mà tôi giả định. – CapturedTree

2

một cách dễ dàng là sử dụng SmsManager.Telephony.