12 Eylül 2016 Pazartesi

SMSMessage Sınıfı

SMS Okuma
Bir BroadcastReceiver tanımlanır. Kodu şuna benzer.
public class SmsBroadcastReciever extends BroadcastReceiver {

  @Override
  public void onReceive(Context context, Intent intent) {

    Bundle bundle = intent.getExtras();
    
    Object[] sms = (Object[]) bundle.get("pdus");    
    for (Object sm : sms) {
      SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) sm);
      String smsBody = smsMessage.getMessageBody();
      String senderNumber = smsMessage.getOriginatingAddress();      ...
   }
}
Eğer aynı sınıf hem okuma hem de gönderme için kulllanılıyorsa ikisi şöyle ayırt edilir.
public class SmsBroadcastReciever extends BroadcastReceiver {
  @Override
  public void onReceive(Context context, Intent intent) {
    String MSG_TYPE = intent.getAction();
    if (MSG_TYPE.equals("android.provider.Telephony.SMS_RECEIVED")) {
      ...
    } else if (MSG_TYPE.equals("android.provider.Telephony.SEND_SMS")) {
     ...
    } 
  }
}
createFromPdu metodu
Şöyle yaparız.
byte [] pdu = ...;
SmsMessage sms = SmsMessage.createFromPdu (pdu);
getDisplayMessageBody metodu
Şöyle yaparız.
String message = sms.getDisplayMessageBody();
getMessageBody metodu
Şöyle yaparız.
String message = sms.getMessageBody();
getOriginatingAddress metodu
Şöyle yaparız.
String senderNumber = sms.getOriginatingAddress();
getProtocolIdentifier metodu
Şöyle yaparız.
sms.getProtocolIdentifier();
getStatusOnIcc metodu
Şöyle yaparız.
sms.getStatusOnIcc();
getStatusOnSim metodu
Şöyle yaparız.
sms.getStatusOnSim();
Manifest 
BroadcastReceiver şöyle şöyle etkinleştirilir.
<receiver android:name="com.example.abc.SmsBroadcastReciever">  <intent-filter>
    <action android:name="android.provider.Telephony.SMS_RECEIVED" />
  </intent-filter>
</receiver>
Şu izinlere gerek vardır.
<uses-permission android:name="android.permission.RECEIVE_SMS"
        android:required="true"/>
<uses-permission android:name="android.permission.READ_SMS"
        android:required="true"/>

Hiç yorum yok:

Yorum Gönder