Merhabalar arkadaşlar , bu yazımızda android telefonumuz üzerinden sms atmayı öğreneceğiz. Sms atma işlemini yapacağımızı öğrenen bazı arkadaşların bu konuya gerçekten yabancı olduklarını hissettim uygulama geliştirirken mikrodenetleyicili sistemleri kullanan arkadaşlar içinde bu kısımda kolaylıkları görmüş olacağız.

Sms’i nasıl atacağız ?
– Sms’i telefonumuza koyduğumuz bir buton üzerinden bir aktivite servisimiz ile gerçekleyeceğiz.

Aktivite Servisi nedir ?
– Aktivite servisi, android’in arka planda yaptığı ve kullanıcı tarafından pending intent bekleyen bir yapıdır.

Ben bu yazımda 2 çeşit SMS atma uygulaması geliştirdim. Bunun için ilk olarak
1 – Kullanıcı tarafından belirlenen bir telefon numarasına belirli bir mesajı göndermek

2 – Kullanıcı istediği numaraya istediği mesajı , mesaj kutuları içine yazarak göndermesi
Sms gönderecek olan uygulamamızı inceleyecek olursak ;
[codesyntax lang=”php”]

private void sendSMS(String telefonNo, String mesaj)
{
PendingIntent pi = PendingIntent.getActivity(this, 0,new Intent(this, MainActivity.class), 0);
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(telefonNo, null, mesaj, pi, null);
}

[/codesyntax]

Mesaj gönderecek olan uygulamamız bu olup  yaptıklarından bahsedecek olursak ,
Öncelikle  bir pending intent oluşturuyoruz. Burada yaptığımız şey MainActivity class’ımızdan gelecek intentleri
karşılayacağımızı belirtip bir anahtar oluşturuyoruz. Devamında Android geliştiricilerinin bize yaptıkları bir kütüphaneden
yararlanarak Sms yöneticimizi oluşturuyoruz. Daha sonra SmsManager altındaki sendTextMessage ( yazi tipindeki mesajı gönderen) fonksiyonumuzu çağırarak telefonNo ve mesajımızı belirtiyoruz ardından sürekli bekleyecek olan pending intent’imizle imliyoruz class’ımızı.

Bu işlemleri yaparken Android_Manifest.xml’de sms atmak için izinimizi vermemiz gerekiyor.
[codesyntax lang=”php”]

 <uses-permission android:name="android.permission.SEND_SMS"></uses-permission>

[/codesyntax]

ilk olarak kendi oluşturduğum belirli bir telefon numarasına belirli bir mesajı göndermeyi inceleyelim. Buton SetonclickListener class’ımız ile butona basıldığı anda
dinleyici üzerinden istediğimiz kodları çalıştırmamızı sağlıyor. Bende Sms fonksiyonumu bu kodun içerisinde çağırarak işimi kolaylaştırmak istedim. Ve inceleyecek olursak telefonNo ve mesaj kısmımızı doldurup işlemimizi yapıyoruz.

MainActivity.java

[codesyntax lang=”php”]

package com.gokhantarim.smsproje;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

import android.os.Bundle;
import android.os.StrictMode;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.Intent;
import android.telephony.SmsManager;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity {

	public static String phoneNo = "telefonnumaramiz";
	public static String message = "mesajimiz";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //activity_main.xml 'e eklediğimiz kompanentleri gerçekliyoruz.
      Button buton = (Button)findViewById(R.id.button1);

      buton.setOnClickListener(new OnClickListener() {

		@Override
		public void onClick(View v) {
			sendSMS(phoneNo,message); //butona basılma anında sms atiyoruz.
		}
		});

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    private void sendSMS(String telefonNo, String mesaj)
    {        
        PendingIntent pi = PendingIntent.getActivity(this, 0,
            new Intent(this, MainActivity.class), 0);                
        SmsManager sms = SmsManager.getDefault();
        sms.sendTextMessage(telefonNo, null, mesaj, pi, null);        
    }
}

[/codesyntax]

activity_main.xml

[codesyntax lang=”php”]

<RelativeLayout 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" >

    <requestFocus
        android:layout_marginRight="28dp"
        android:layout_marginTop="34dp" />

    <AbsoluteLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true" >

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_x="185dp"
            android:layout_y="236dp"
            android:text="Gönder" />

    </AbsoluteLayout>

</RelativeLayout>

[/codesyntax]

Sırada bizim istediğimiz herhangi bir numaraya göndermeyi görelim. Bu kısımda 2 yazı alanımızdaki veriyi çekerek mesaj gönderen fonksiyonumuzu çağırıyoruz aynı şekilde buton dinleyicimiz üzerinden.

MainActivity.java

[codesyntax lang=”php”]

package com.gokhantarim.smsproje;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

import android.os.Bundle;
import android.os.StrictMode;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.Intent;
import android.telephony.SmsManager;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //activity_main.xml 'e eklediğimiz kompanentleri gerçekliyoruz.
      TextView txt1 = (TextView)findViewById(R.id.textView1);
      TextView txt2= (TextView)findViewById(R.id.textView2);
      final EditText editText = (EditText)findViewById(R.id.editText1);
      final EditText editText2 = (EditText)findViewById(R.id.editText2);
      Button buton = (Button)findViewById(R.id.button1);

      buton.setOnClickListener(new OnClickListener() {

		@Override
		public void onClick(View v) {

			sendSMS(editText.getText().toString(),editText2.getText().toString()); //butona basılma anında sms atiyoruz.
		}
		});

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    private void sendSMS(String telefonNo, String mesaj)
    {        
        PendingIntent pi = PendingIntent.getActivity(this, 0,
            new Intent(this, MainActivity.class), 0);                
        SmsManager sms = SmsManager.getDefault();
        sms.sendTextMessage(telefonNo, null, mesaj, pi, null);        
    }
}

[/codesyntax]

activity_main.xml

[codesyntax lang=”php”]

<RelativeLayout 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" >

    <requestFocus
        android:layout_marginRight="28dp"
        android:layout_marginTop="34dp" />

    <AbsoluteLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_x="15dp"
            android:layout_y="15dp"
            android:text="Telefon Numarasi"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <EditText
            android:id="@+id/editText1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_x="22dp"
            android:layout_y="40dp"
            android:ems="10"
            android:inputType="phone" />

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_x="23dp"
            android:layout_y="98dp"
            android:text="Mesajımız"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <EditText
            android:id="@+id/editText2"
            android:layout_width="254dp"
            android:layout_height="wrap_content"
            android:layout_x="26dp"
            android:layout_y="140dp"
            android:ems="10" />

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_x="185dp"
            android:layout_y="236dp"
            android:text="Gönder" />

    </AbsoluteLayout>

</RelativeLayout>

[/codesyntax]

AndroidManifest.xml (her iki uygulamamız içinde aynıdır. )
[codesyntax lang=”php”]

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.gokhantarim.smsproje"
    android:versionCode="1"
    android:versionName="1.0" >
	<uses-permission android:name="android.permission.SEND_SMS"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

[/codesyntax]
Gelin şimdi uygulamamızı video’muzda görecek olursak.
1-

2-

Sorularınızı bekliyor olacağım arkadaşlar. Teşekkür ederim takip ettiğiniz için.

______
Gökhan TARIM