Eğer uygulama içinden e-posta atmak ya da SMS göndermek istersek, Android ile gelen uygulamaları bir Intent yardımıyla açarak gönderebiliriz. Bunun için yapmamız gereken, oluşturulan Intent sınıfının ne amaçla kullanılacağını belirtmek ve startActivity metodunu oluşturulan Intent ile çağırmaktır. Bundan sonra telefonda bu işlem için seçilmiş uygulama açılır ve kişinin karşısına belirtilen değerlerle bir SMS ya da e-posta gönderme penceresi gelir.
Şimdi bunu bir Android uygulamasında nasıl yapabileceğimizi görelim. Öncelikle ekranda iki düğmesi olan basit bir uygulama oluşturalım. Bununla ilgili layout dosyası aşağıdaki gibi olsun:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/send_sms"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="SMS" />
<Button
android:id="@+id/send_mail"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Mail" />
</LinearLayout>
Böylece ekranda send_sms ve send_mail id değeri olan iki adet düğme oluşturmuş olduk. Şimdi onCreate metoduna gelerek SMS gönderme amacıyla aşağıdaki kodu yazalım:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
((Button) findViewById(R.id.send_sms)).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String smsNumber = "05322100000";
String smsText = "Merhaba naber?";
Uri uri = Uri.parse("smsto:" + smsNumber);
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
intent.putExtra("sms_body", smsText);
startActivity(intent);
}
});
}
Burada yapılan işlemi açıklarsak, öncelikle findViewById metoduyla send_sms adlı düğmeye erişiyoruz. Burada daha önce açıklandığı üzere setOnClickListener metoduyla düğmeye basıldığında gerçekleşecek işlemleri belirleyebiliyoruz. onClick metodu altında yazdığımız işlemler, kullanıcı düğmeye bastığı takdirde gerçekleşecek işlemlerdir.
onClick altında ise öncelikle smsNumber adında bir değişkene mesajı göndereceğimiz numarayı atıyoruz. Biz burada numarayı kodun içerisinde tanımladık ancak bu elbette bir EditText üzerinden ya da başka bir kaynaktan gelebilir. Aynı şekilde smsText değeri de SMS ile gönderilecek metnin ne olacağını belirtir. Intent ile SMS göndermek istediğimizde yaratacağımız URI değişkenine değer olarak smsto: vermemiz gerekiyor. Bu şekilde işletim sistemi Intent ile beraber mesaj atma uygulamasını çalıştırması gerektiğini anlayacaktır. Eğer mesaj uygulamasında gönderilecek telefon numarasının da yer almasını istersek, bu değeri smsto:telefon_no formatında kullanmamız gerekir. Gönderilecek SMS metnini ise putExtra metodu ve sms_body anahtarıyla oluşturulacak Activity’e gönderiyoruz. startActivity metodunu çağırdığımızda atanan değerlerle bir Intent oluşturulacak ve mesaj uygulaması açılacaktır.
E-posta göndermek için yine benzer şekilde e-posta uygulamasını çağıran bir Intent hazırlamamız gerekiyor. Şimdi onCreate metodu içine aşağıdaki kodu ekleyerek devam edelim:
((Button) findViewById(R.id.send_mail)).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/html");
intent.putExtra(Intent.EXTRA_EMAIL, new String[] { "egitim@turkcell.com.tr" });
intent.putExtra(Intent.EXTRA_SUBJECT, "Android");
intent.putExtra(Intent.EXTRA_TEXT, "Kod dosyalarina nasil ulasabiliriz?");
startActivity(Intent.createChooser(intent, "Send Email"));
}
});
Oluşturulan Intent'e putExtra metotlarıyla gönderilecek e-posta ile ilgili çeşitli değişkenleri ekleyebiliriz. EXTRA_MAIL değeri alıcının e-posta adresini belirtirken, EXTRA_SUBJECT e-postanın konusunu belirlememize yardımcı olur. EXTRA_TEXT değeriyse e-posta ile birlikte gönderilecek metni ayarlamanızı sağlar. EXTRA_MAIL değeri bir String dizisi olduğundan birden fazla kişiye gönderilecek e-postalarda bunları dizi şeklinde belirtebiliriz.
startActivity içerisinde createChooser metodu ile bir Intent çağırdığımızda telefonda bu işlem için tanımlı diğer uygulamaların da seçilebileceği bir ekran açılacaktır. Bu şekilde kullanıcı telefonunda yer alan istediği e-posta uygulamasını kullanabilir.
Kullanıcı ilgili uygulamayı seçtiğinde (biz Gmail uygulamasını seçtik) kod içerisinde belirtilen parametrelerle e-posta gönderme ekranı açılacaktır.