1
SMS를 수신하는 애플리케이션을 작성했습니다. 의 AndroidManifest.xml에서
내가 쓴 : 수신매니페스트의 수신기 닫기
<receiver
android:name=".SmsReceiver">
<intent-filter>
<action
android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
모든 SMS-ES는 클래스 SmsReceiver에 의해 분석된다.
클래스 SmsReceiver는 :
public class SmsReceiver extends BroadcastReceiver
{
private static final String SMS_RECEIVED = "com.example.remotecontrol.SMS_RECEIVED";
private static final String SMS_CONTENT_KEY = "com.example.remotecontrol.SMS_CONTENT_KEY";
@Override
public void onReceive(Context context, Intent intent)
{
Bundle bundle = intent.getExtras();
SmsMessage[] message = null;
String contentMessage = "";
if(bundle != null)
{
Object[] pdus = (Object[]) bundle.get("pdus");
message = new SmsMessage[pdus.length];
for(int i=0; i<message.length; i++)
{
message[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
contentMessage += "SMS from " + message[i].getOriginatingAddress() + ": ";
contentMessage += message[i].getMessageBody() + "\n";
}
Toast.makeText(context, contentMessage, Toast.LENGTH_LONG).show();
}
Intent intentSmsReceived = new Intent();
intentSmsReceived.setAction(SMS_RECEIVED);
intentSmsReceived.putExtra(SMS_CONTENT_KEY, contentMessage);
context.sendBroadcast(intentSmsReceived);
}
}
는 SMS를 수신하고 프로그램에 의도를 보냅니다.
registerReceiver(new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
String contentMessage = intent.getExtras().getString(SMS_CONTENT_KEY);
Toast.makeText(context, contentMessage + "text", Toast.LENGTH_LONG).show();
//TODO
//process SMS
unregisterReceiver(this);
}
}, new IntentFilter(SMS_RECEIVED));
코드의이 부분은 의도를 처리하고 SMS를 처리하고 응용 프로그램과 상호 작용합니다.
Android Manifest로 작성된 수신자를 등록 취소하는 방법은 무엇인가요? 그것은 모든 SMS-es를 처리합니다. 올바른 하나만 처리해야합니다.
답변 해 주셔서 감사합니다. :) – Pawel