Hazır Intent Nesnelerinin Kullanımı(Build-in)
Android İşletim Sisteminde Var Olan ya da Hazır Intent Nesneleri(Build-in)
Android işletim sistemi için bazı uygulamara ilişkin Activitiyler dışarıdan erişilebilir şekilde bulunmaktadır.Bir activitiynin diğer uygulamarla açılması konusu ileride ele alınacaktır.Bir Activitiyi'nin dışarıdan erişilebilirmesi için o activity ye isim verilmesi gereklidir.Burada dışarıdan kavramı Activitynin ait olduğu dışında kalan diğer uygulamalardır.
Bu isimlerin doğrudan bilinmesi zor olacağından Intent
sınıfı içerisinde bu isimlere ilişkin static final elemanlar bildirilmiştir.Programcı bu elemanları rahatlıkla kullanabilir.
Bu tarz activitylere ilişkin intent nesnelerine implicit Intent denilmektedir.
Örnek Çalışma : [Dropbox]039-BuildInIntents
Temel Bazı intentler şunlardır:
- ACTION_DIAL Intenti: Bu intent yardımıyla intente bir numara gönderilerek telefonun arama ekranı çıkartılabilir.
Örnek Kod:
public static Intent dial(String numberStr)
{
Intent intent = null;
try {
intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse(String.format("tel:%s", numberStr)));
}
catch (Exception ex) {
throw new IllegalArgumentException("Geçersiz Telefon numarası");
}
return intent;
}
ACTION_CALL Intenti : Bu intent doğrudan arama yapmak için kullanılır. Bu intent için
CALL_PHONE
permissionu gerekmektedir.Bu intent Android 6.0 ile birlikte çalışma zamanı iznine(Runtime Permissions) de bağlanmıştır. 6.0 öncesi sürümlerde herhangi bir sıkınt oluşmayacaktır.
Örnek Kod:
public static Intent call(String numberStr) { Intent intent = null; try { intent = new Intent(Intent.ACTION_CALL); intent.setData(Uri.parse(String.format("tel:%s", numberStr))); } catch (Exception ex) { throw new IllegalArgumentException("Geçersiz Telefon numarası"); } return intent; }
ACTION_DIAL ve ACTION_CALL Intentleri ile sesli arama da yapılabilmektedir.Bunun için verilen uri bilgisi değiştirilecektir.
- ACTION_VIEW Intenti : Bu intent birçok amaçlı kullanılabilien bir intentdir. Örneğin işletim sistemi içerisindeki default browserda bir sayfa gösterilecekse ACTION_VIEW Intentine aşağıdaki url verilebilir.
"http://" + url;
Örnek Kod:
public static Intent web(String url)
{
if (!url.startsWith("http://") && !url.startsWith("https://"))
url = "http://" + url;
return new Intent(Intent.ACTION_VIEW , Uri.parse(url));
}
Action_View intenti ile harita üzerinde istenilen bir koordinata ilişkin bilgi de gösterilebilir.Bu gösterme biçiminin çeşitli versiyonları vardır.Bu verisyonlar genel olarak haritalara göre çeşitlidir.
"geo:47.6 , 52.3"
Örnek Kod:
public static Intent map(double lat, double lon)
{
Intent intent = new Intent(ACTION_VIEW);
intent.setData(Uri.parse(String.format("geo:%f,%f", lat, lon)));
return intent;
}
public static Intent map(double lat, double lon, int zoom)
{
Intent intent = new Intent(ACTION_VIEW);
intent.setData(Uri.parse(String.format("geo:%f,%f?z=%d", lat, lon, zoom)));
return intent;
}
- ACTION_WEB_SEARCH Intenti Bu intent web üzerinde arama yapmak için kullanılan bir intentdir.Bu intent için
SearchManager
sınıfınınFinal Static Query
elemanı kullanılmaktadır.Buna göre bu intent nesnesin SearchManager.query'ye key olarak verilir. Ve aranacak değer eklenir
Örnek Kod:
public static Intent searchOnWeb(String text)
{
Intent intent = new Intent(ACTION_WEB_SEARCH);
intent.putExtra(SearchManager.QUERY, text);
return intent;
}
Resim müzik ya da Contact List gibi bilgilerin alınması için actionPeek
kullanılmaktadır.Aslında bu bilgiler Android işletim sisteminde ayrı ayrı veritabanında tutulmaktadar.Ve bu bilgiler ContentProvider
ile dışarıya açılmaktadır.
ACTION_SENDTO , ACTION_SEND , ACTION_SEND_MULTIPLE Intenti Mail göndermek için 3 çeşit ACTION bulunmaktadır.
ACTION_SENDTO attachment olmadan mail göndermek için kullanılır.
ACTION_SEND tek bir attachmentla mail göndermek için kullanılır.
ACTION_SEND_MULTIPLE çoklu attachment mail göndermek için kullanılır.
Anahtar Notlar:Bir uygulamadaki kaynağın yolu resource String olarak şu şekilde bir genel formatta belirtilebilir :android.resource://
String str = "android.resource://" + getPackageName() + "/" + R.drawable.ship;
ACTION_SENDTO intenti attachment olmadan mail gönderme işlemlerinden kullanılmaktadır.Kullanımı oldukça basittir.Inteetent nesnesisi oluşturulduktan sonra mailto ön takısı ile ekxtra elemanlara bilgi geçilerek kolaylıkla gönderme yapılabilir.
public static Intent sendEmail(String subject, String text, String ... to)
{
Intent intent = new Intent(ACTION_SENDTO);
intent.setData(Uri.parse("mailto:"));
intent.putExtra(EXTRA_EMAIL, to);
intent.putExtra(EXTRA_SUBJECT, subject);
intent.putExtra(EXTRA_TEXT, text);
return intent;
}
ACTION_SEND intenti ile emaile bir dosyai iliştirilerek gönderilibilir.Burada önemli olan seçilecek dosyanın ne türde olduğunun belirlenmesidir.
Intentin setType
metodu ile gönderilecek dosyanın türü belirlenebilir.setType a verilecek olan argümanın genel biçimi < tür > / < türe ilişkin uzantı >
eğer tür */*
şeklinde verilirse bu durumda iliştirlecek dosya ham raw bir dossya olarak kabul edilir yanlızca verileri gönderilir.
ACTION_SEND intenti ile emaile bir tane dosya iliştirelebilir. Eğer birden fazla dosya iliştirilecekse ACTION_MULTIPLE intenti kullanılmalıdır.
Diğer Common Intentler için [Common Intents List] listesine bakılabilir.
NOTLARIM
IntentUtils sınıfı yazılarak direk geri dönüşü Intent hale getirilebilir.Bu sınıf örnek olarak yazılabilir.