27 Mart 2010 Cumartesi

Android hafızasından SMS silme

Seçtiğiniz bir kısa mesajı silme için öncelikle bu mesajın _id değerini daha önceki yazıda anlattığımız gibi elde etmeniz gerekiyor. _id değeri mesaja özel olduğundan yanlışlıkla başka bir mesajı silme riski olmadan istediğiniz mesajı silmeniz için kullanabileceğiniz bir değerdir. Daha sonra bir ContentResolver yaratarak silme işlemine başlıyoruz. Burada kullanacağımız content Uri "content://sms/" şeklindedir.

final Uri SMS_CONTENT_URI = Uri.parse("content://sms");

int result = context.getContentResolver().delete(SMS_CONTENT_URI,"_id=" + messageId, null);

Bu şekilde seçtiğimiz id değerini taşıyan mesajı telefon belleğinden silmiş oluyoruz. Tabii bu işlemi yapmadan önce AndroidManifest.xml dosyasına satırını eklemeyi unutmuyoruz. Bu izin kısa mesajı hafızasını silip değiştirmenize olanak sağlayacaktır.

Android'de SMS okuma işlemleri

Bu yazımızda android cep telefonu hafızasında yer alan kısa mesajları okumayı göstereceğiz. Bunun için öncelikle uygulamamıza SMS okuma iznini vermemiz gerekiyor. AndroidManifest.xml dosyasına satırını eklediğimizde uygulamaya bu izni vermiş oluyoruz. Daha sonra kısa mesajları tutacağımız bir data modeli oluşturuyoruz. Bu nesneye aşağıdaki değişkenleri ekliyoruz.

String address; // gönderen adresi
String contactId_string; // gönderen Id
String body; // mesaj içeriği
long timestamp; // gönderilme tarihi
long threadId; // eğer aynı kişiden birden fazla mesaj alınmışsa android bu mesajlar bir dizi halinde tutar ve id olarak bu değeri verir
int count; // kaçıncı mesaj
long messageId; // mesaj Id - android her mesaja özel bir Id atar

Getter ve Setter metodlarını ekledikten sonra nesnenin adına da SMSMessage gibi bir değer verirsek işimiz tamam oluyor.

Şimdi yapmamız gereken bir Cursor objesi tanımlayıp işletim sisteminin kısa mesajları sakladığı veritabanına sorgu göndermek. Kısa mesajların gelen kutusu "content://sms/inbox" şeklinde tanımlanmıştır. Bu veri tabanında bulabileceğiniz sütunlar ise "_id", "thread_id", "address", "person", "date", "body" şeklindedir. "read" sütunu ise kısa mesajın henüz okunup okunmadığını belirtir.

Aşağıdaki fonksiyon gelen kutusundaki bütün içeriği bir ArrayList içine kayıt edecektir. unreadOnly seçeneği boolean bir değer olup sadece okunmamış mesajları görmenizi sağlar.

public List getAllSmsInbox(boolean unreadOnly) {

// mesajları tutacağımız ArrayList
List results = new ArrayList();

String SMS_READ_COLUMN = "read"; // okundu bilgisiyle ilgili sütun
String WHERE_CONDITION = unreadOnly ? SMS_READ_COLUMN + " = 0" : null;
String SORT_ORDER = "date DESC"; // tarihi göre azalan
int count = 0; // mesaj sayısı

// burada sorguyu oluşturup hangi sütunları seçeceğimizi söylüyoruz
Cursor cursor = context.getContentResolver().query(
Uri.parse("content://sms/inbox"),
new String[] { "_id", "thread_id", "address", "person", "date",
"body" }, WHERE_CONDITION, null, SORT_ORDER);

if (cursor != null) {
try {
while (cursor.moveToNext()) {

long messageId = cursor.getLong(0); // id sütunu saklanır
long threadId = cursor.getLong(1); // thread id saklanır
String address = cursor.getString(2); // gönderen adresi saklanır
long contactId = cursor.getLong(3); // kişi id'si saklanır (adres defteriyle ilişkili)
String contactId_string = String.valueOf(contactId);
long timestamp = cursor.getLong(4); // gönderilen zaman saklanır

String body = cursor.getString(5); // mesaj içeriği saklanır

if (!unreadOnly) {
count = 0;
}

SMSMessage smsMessage = new SMSMessage(context, address,
contactId_string, body, timestamp, threadId, count,
messageId); // nesneyi oluşturuyoruz

}
} finally {
cursor.close(); // işimiz bitince cursor kapanmalı yoksa memory leak hatası alırız
}
}
return results; // cevabı döndürüyoruz
}

Aynı yöntemle sistemde saklanan diğer mesaj tiplerine de ulaşabiliriz. Aşağıda bunların bir listesini veriyorum.

SMS Gelen Kutusu = "content://sms/inbox"
Gönderilemeyen SMS = "content://sms/failed"
Bekleyen SMS = "content://sms/queued"
Gönderilmiş SMS = "content://sms/sent"
Taslak SMS = "content://sms/draft"
SMS Giden Kutusu = "content://sms/outbox"
Gönderilememiş SMS = "content://sms/undelivered"
Bütün SMS'ler = "content://sms/all"
Karşılıklı Konuşmalar = "content://sms/conversations"

14 Mart 2010 Pazar

TURKCELL TEKNOLOJİ, FARKINI FARK EDENİ ARIYOR !

Farklıyım, bunu fark ettirmeye de hazırım
Renkliyim, gökyüzü turuncu benim için
Yaratıcıyım, yeniliğin gücüne inanırım

diyorsan, Turkcell Teknoloji seni bekliyor…

Eğer merak ediyorsan; başvuru kriterlerimiz neler diye; üniversite 3.sınıf öğrencisi olman, İngilizce bilginin ileri seviyede olması ve farkını fark ettirebilmen ön kriterlerimiz
Nasıl başvurabilirim diyorsan; farkinifarkedeniariyor@turkcellteknoloji.com.tr ye özgeçmişin ile birlikte başvuru yapabilirsin.

http://www.facebook.com/#!/group.php?gid=314890018690&ref=ts

3 Mart 2010 Çarşamba

Blackberry Uygulama Geliştirme

Bu kadar değişik mobil platforma bulaşmışken Blackberry platformunu atlamak hoş olmazdı. Oldukça yoğun (ve gördüğüm kadarıyla sadık) bir kullanıcı kitlesine sahip Blackberry'ler özellikle iş dünyasında fazlaca tercih edilmekte. Ayrıca uygulamalar oldukça pahalı fiyatlara satılmasına rağmen iyi satış rakamlarına ulaşmakta. Durum böyle olunca dil olarak Java kullanan bu platform mobil uygulama geliştiriciler için oldukça cazip bir alan haline geliyor.

Uygulama geliştirmeye başlamadan önce Eclipse sitesinden aynı Android'de olduğu gibi Eclipse IDE indirmenizi öneririm. Versiyon olarak 3.4 Ganymede versiyonunu tercih ediniz, çünkü bu yazının yazıldığı tarihteki Blackberry JDE'leri bu versiyonu destekliyordu. İndirme işlemi bittikten sonra aşağıdaki dosyaları çekmeniz gerekmektedir.

1) BlackBerry_JDE_PluginFull_1.0.0.67
2) eJDE1.0.0.67_With_CP4.5.0.16
3) eJDE-4_7_0_46_Component

Bu dosyaları www.balckberry.com adresinden Developer linkine girerek indirebilirsiniz. Burada kayıt olduktan sonra Java Application Development linkine tıklayıp Development tools and downloads linkine girin ve listelenen dosyaları sırasıyla yükleyin. Eğer geçmiş platformları yüklemek isterseniz http://na.blackberry.com/eng/developers/javaappdev/javadevenv.jsp adresinde önceki JDE versiyonlarını bulabilirsiniz.

BlackBerry_JDE_PluginFull_1.0.0.67 dosyasını kurup yükledikten sonra Eclipse'de yeni proje seçenekleri arasında Blackberry seçeneğini göreceksiniz. BUrada bir proje oluşturarak programınızı geliştirmeye başlayabilirsiniz.

Bir sonraki yazımızda örnek bir Blackberry uygulaması anlatmaya çalışacağız.