5 Şubat 2017 Pazar

Android İle Telefon Rehberinden Numara Okuma

Rehberimizden numara okumak için öncelikle AndroidManifest.XML dosyasına ReadContacs izni verilmeli bunun için Manifestonuza aşağıdaki satırı ekleyebilirsiniz.

<uses-permission android:name="android.permission.READ_CONTACTS">
</uses-permission>
Daha sonra ise activity_main.java dosyasına aşağıdaki gibi kodları yerleştirebilirsiniz.
package com.example.yonetici.rehberokuma;

import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.provider.ContactsContract;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

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

    public void RehberOku(View view) {

        pickContact();

    }
    static final int PICK_CONTACT_REQUEST = 1;  // istek kodu

    private void pickContact() {
        Intent pickContactIntent = new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts"));
        pickContactIntent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE); // sadece telefon numarası olan kullanıcıları göstersin
        startActivityForResult(pickContactIntent, PICK_CONTACT_REQUEST);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // metoda gelen isteğin, yanıt vereceğimiz istek olup olmadığını kontrol edelim
        if (requestCode == PICK_CONTACT_REQUEST) {
            // isteğin başarılı sonuçlandırıldığını doğrulayalım
            if (resultCode == RESULT_OK) {
                // seçilen kişiye işaret eden URI'yi alalım
                Uri contactUri = data.getData();
                // sadece NUMBER sütununa ihtiyacımız var
                String[] projection = {ContactsContract.CommonDataKinds.Phone.NUMBER};

                // NUMBER sütununu alarak kişi üzerinde sorgulama yapalım
                // Bir seçim ya da sıralama işine gerek yok (gelen URI'de sadece bir tane sonuç var)
                // DİKKAT: query() metodunu uygulama arayüzünüzü (UI) bloklamamak için
                // farklı bir thread üzerinde çağırmalısınız. Örneğin basitliğini korumak için o
                // işlemi burada yapmıyoruz
                // sorguyu gerçekleştirenin CursorLoader olduğu gözünüzden kaçmasın
                Cursor cursor = getContentResolver()
                        .query(contactUri, projection, null, null, null);
                cursor.moveToFirst();

                // telefon numarasını NUMBER sütunundan alalım
                int column = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
                String number = cursor.getString(column);
                TextView txt3 =(TextView)findViewById(R.id.textView3);
                txt3.setText(number);
                // telefon numarasıyla ilgili işlemle...
            }
        }
    }
}
activity.xml dosyamız ise böyle;
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.yonetici.rehberokuma.MainActivity">

    <Button
        android:text="Oku"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:id="@+id/button"
        android:onClick="RehberOku" />

    <TextView
        android:text="TextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/button"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="22dp"
        android:id="@+id/textView3" />
</RelativeLayout>