Merhabalar. Androidde broadcast recevier ile gelen mesajları dinleyip işlem yapabiliyorum ancak giden mesajları dinleme olayı için örnek gösterebilecek olan var mı. İnternetten araştırdım ama sonuca ulaşamadım.

soruldu: 24 Eki '13, 04:56

olkunmustafa's gravatar image

olkunmustafa
582222934
cevap kabul oranı: 26%

değiştirildi: 06 Kas '13, 11:30

Turgay%20Can's gravatar image

Turgay Can
8.3k63798


Bu işini görebilir :

public class SmsObserver extends ContentObserver {

private Context mContext;

private String contactId = "", contactName = "";
private String smsBodyStr = "", phoneNoStr = "";
private long smsDatTime = System.currentTimeMillis();
static final Uri SMS_STATUS_URI = Uri.parse("content://sms");

public SmsObserver(Handler handler, Context ctx) {
    super(handler);
    mContext = ctx;
}

public boolean deliverSelfNotifications() {
    return true;
}

public void onChange(boolean selfChange) {
    try{
        Log.e("Info","Notification on SMS observer");
        Cursor sms_sent_cursor = mContext.getContentResolver().query(SMS_STATUS_URI, null, null, null, null);
        if (sms_sent_cursor != null) {
            if (sms_sent_cursor.moveToFirst()) {
                String protocol = sms_sent_cursor.getString(sms_sent_cursor.getColumnIndex("protocol"));
                Log.e("Info","protocol : " + protocol);
                //for send  protocol is null
                if(protocol == null){
                    /*
                    String[] colNames = sms_sent_cursor.getColumnNames();                       
                    if(colNames != null){
                        for(int k=0; k<colNames.length; k++){
                            Log.e("Info","colNames["+k+"] : " + colNames[k]);
                        }
                    }
                    */
                    int type = sms_sent_cursor.getInt(sms_sent_cursor.getColumnIndex("type"));
                    Log.e("Info","SMS Type : " + type);
                    // for actual state type=2
                    if(type == 2){
                        Log.e("Info","Id : " + sms_sent_cursor.getString(sms_sent_cursor.getColumnIndex("_id")));
                        Log.e("Info","Thread Id : " + sms_sent_cursor.getString(sms_sent_cursor.getColumnIndex("thread_id")));
                        Log.e("Info","Address : " + sms_sent_cursor.getString(sms_sent_cursor.getColumnIndex("address")));
                        Log.e("Info","Person : " + sms_sent_cursor.getString(sms_sent_cursor.getColumnIndex("person")));
                        Log.e("Info","Date : " + sms_sent_cursor.getLong(sms_sent_cursor.getColumnIndex("date")));
                        Log.e("Info","Read : " + sms_sent_cursor.getString(sms_sent_cursor.getColumnIndex("read")));
                        Log.e("Info","Status : " + sms_sent_cursor.getString(sms_sent_cursor.getColumnIndex("status")));
                        Log.e("Info","Type : " + sms_sent_cursor.getString(sms_sent_cursor.getColumnIndex("type")));
                        Log.e("Info","Rep Path Present : " + sms_sent_cursor.getString(sms_sent_cursor.getColumnIndex("reply_path_present")));
                        Log.e("Info","Subject : " + sms_sent_cursor.getString(sms_sent_cursor.getColumnIndex("subject")));
                        Log.e("Info","Body : " + sms_sent_cursor.getString(sms_sent_cursor.getColumnIndex("body")));
                        Log.e("Info","Err Code : " + sms_sent_cursor.getString(sms_sent_cursor.getColumnIndex("error_code")));

                        smsBodyStr = sms_sent_cursor.getString(sms_sent_cursor.getColumnIndex("body")).trim();
                        phoneNoStr = sms_sent_cursor.getString(sms_sent_cursor.getColumnIndex("address")).trim();
                        smsDatTime = sms_sent_cursor.getLong(sms_sent_cursor.getColumnIndex("date"));

                        Log.e("Info","SMS Content : "+smsBodyStr);
                        Log.e("Info","SMS Phone No : "+phoneNoStr);
                        Log.e("Info","SMS Time : "+smsDatTime);
                    }
                }
            }
        }
        else
            Log.e("Info","Send Cursor is Empty");
    }
    catch(Exception sggh){
        Log.e("Error", "Error on onChange : "+sggh.toString());
    }
    super.onChange(selfChange);
}//fn onChange

}//End of class SmsObserver

Uygulamanın çalıştığı yere de şu kodları yazman yeterli :

static final Uri SMS_STATUS_URI = Uri.parse("content://sms");
SmsObserver smsSentObserver = new SmsObserver(new Handler(), this);
this.getContentResolver().registerContentObserver(SMS_STATUS_URI, true, smsSentObserver);

Daha iyi anlaman için kodların kullanıldığı projeyi şu linkten alabilirsin(kodların hemen altında indirme linki var) :

http://katharnavas.wordpress.com/2012/01/18/listening-for-outgoing-sms-or-send-sms-in-android/

permanent link

cevaplandı: 05 Kas '13, 00:50

yahyacan55's gravatar image

yahyacan55
645313
cevap kabul oranı: 21%

ContentObserver kullanımı ilk defa görüyorum. Şimdi inceleyeceğim bakalım biraz daha. Cevap için teşekkürler.

(18 Kas '13, 02:00) olkunmustafa olkunmustafa's gravatar image

Burda detaylıca bulabileceğini düşünüyorum. http://www.vogella.com/articles/AndroidBroadcastReceiver/article.html

permanent link

cevaplandı: 04 Kas '13, 09:01

scorf's gravatar image

scorf
965610
cevap kabul oranı: 0%

Hocam burda broadcast recevierleri anlatmış sms göndermeyle ilgili birşey göremedim ben.

(18 Kas '13, 02:01) olkunmustafa olkunmustafa's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×819

Soruldu: 24 Eki '13, 04:56

Görüntüleme: 1,597 kez

Son güncelleme: 18 Kas '13, 06:25

powered by BitNami OSQA