Telefonlarda en sık kullandığımız özelliklerden biri de telefon numaralarını, isimleriyle birlikte rehbere kaydetmektir. Bu uygulamamızda telefon rehberini ListView penceresinde listeleyeceğiz.
Öncelikle activity_main dosyasını düzenleyelim.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical">
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="get"
android:text="Button" />
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
Daha sonra MainActivity dosyasını düzenleyelim.
public class MainActivity extends AppCompatActivity {
ListView li;
Cursor cursor = null;
Context context = this;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
li = findViewById(R.id.listview);
}
public void get(View view) {
cursor = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
startManagingCursor(cursor);
String[] from = {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.Phone._ID};
int[] to = {android.R.id.text1, android.R.id.text2};
SimpleCursorAdapter simpleCursorAdapter = new SimpleCursorAdapter(context,
android.R.layout.simple_list_item_2, cursor, from, to);
li.setAdapter(simpleCursorAdapter);
li.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
}
}
Manifest dosyasına aşağıdaki satırı ekleyelim.
<uses-permission android:name="android.permission.READ_CONTACTS" />
Projemizi harici bir telefonda çalıştıralım. Proje çalışmayacaktır. Her ne kadar izin için gerekli kodu yazmamıza rağmen telefon bizden ilgili uygulamanın iznini onaylamamızı ister. Bunun telefonunun Ayarlar kısmına gelelim. Buradan Uygulamalar sekmesine girelim. Listeden uygulama ismini bulalım. Uygulamayı seçelim. İzin verilmeyenler listesinden Kişiler kısmına gelelim. İzin ver radyo düğmesini seçelim. Uygulamayı tekrar çalıştıralım. Butona bastığımızda rehber ekranda görüntülenecektir.
Proje üzerinde izinleri elle vermek yerine bir liste halinde kullanıcıyı bilgilendirmek istersek aşağıdaki metodu kullanabiliriz.
public boolean checkPermission() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
&& checkSelfPermission(Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{Manifest.permission.READ_CONTACTS}, 1);
return false;
}
return true;
}
Bu metodu program içinde kullanmak için get() metodunun en üstüne aşağıdaki satırları eklemeniz yeterli olacaktır.
if (!checkPermission()) return;
|