2015-10-28 2 views
-2

Я отправляю сообщение OTP SMS пользователю через приложение для Android. Для отправки SMS я использую SMS-канал. Поэтому я просто нажимаю URL для отправки SMS. Я хочу, чтобы мое приложение получало уведомление, когда SMS доставляется пользователю, чтобы я мог автоматически читать этот OTP.Получать уведомления о доставке SMS с помощью SMS-канала в Android

+0

Этот вопрос довольно слишком коротка для переполнения стека, на мой взгляд, - мы обычно как увидеть некоторые исследования или начать какой-то код. Что говорят Android-документы? (Также, пожалуйста, постарайтесь воздержаться от необходимости срочно отвечать на ваши вопросы - люди, которые здесь помогают, являются добровольцами, и они будут отвечать на досуге). – halfer

ответ

0

см код справочно

main.xml 


<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 
<Button 
    android:id="@+id/btnSendSMS" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Send SMS" /> 
</LinearLayout> 

SMS1Activity.java

package selva.sms; 

import android.app.Activity; 
import android.app.PendingIntent; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.os.Bundle; 
import android.telephony.gsm.SmsManager; 
import android.view.View; 
import android.widget.Button; 
import android.widget.Toast; 
public class SMS1Activity extends Activity 
{ 
Button btnSendSMS; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
super.onCreate(savedInstanceState); 

setContentView(R.layout.main); 
btnSendSMS = (Button) findViewById(R.id.btnSendSMS); 
btnSendSMS.setOnClickListener(new View.OnClickListener() 
{ 
public void onClick(View v) 
{ 
sendSMS("5556", "Hi You got a message!"); 
} 
}); 
} 
//---sends an SMS message to another device--- 

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

cortsey- androidprogramz.blogspot

+0

Как я уже сказал, я использую sms-канал, а не диспетчер sms. Мне просто нужно нажать один URL-адрес на смс. –

Смежные вопросы