GULANGGULING.COM

Membuat Aplikasi Android untuk Membaca Email User

GULANGGULING.COM | ANDROID – Pernah bertanya-tanya : Bagaimana cara mendapatkan alamat email dari user aplikasi Android kita? Berawal dari pertanyaan sederhana itu, saya membuat contoh aplikasi Android untuk menampilkan email dari penggunanya.

Untuk dapat mengambil data email dari pengguna, kita diharuskan menambahkan permisi pada aplikasi. Kenapa begitu? mengambil email itu seperti mau mengambil data privacy dari pengguna, nah maka dari itu kita wajib minta ijin lebih dahulu.

Cara menambahkan permission untuk mengambil data email pengguna adalah dengan menambahkan baris kode dibawah pada file AndroidManifest.xml :

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

Setelah menambahkan baris diatas selanjutnya kita sudah diperbolehkan untuk mengambil data email pengguna dari Class java.

Pada aplikasi yang akan saya buat ini menampilkan seluruh email dari penggunanya dalam component spinner atau bisa disebut combo box atau select box deh.

Sebelum fokus pada cara mengambil data email dari pengguna kita desain dulu tampilannya, paling tidak seperti pada gambar.  

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    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"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="aiueo.web.id.getemailaccount.MainActivity"
    tools:showIn="@layout/activity_main">

    <TextView
        android:id="@+id/Title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="10dp"
        android:layout_marginTop="40dp"
        android:text="Primary Account"
        android:textSize="20dp" />

    <TextView
        android:id="@+id/txtPrimaryAccount"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/Title"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="50dp"
        android:text="Primary Account" />

    <TextView
        android:id="@+id/DropdownTxt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/txtPrimaryAccount"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="10dp"
        android:layout_marginTop="40dp"
        android:text="Dropdown Email Account"
        android:textSize="20dp" />

    <Spinner
        android:id="@+id/spinnerEmail"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/DropdownTxt"
        android:layout_centerHorizontal="true"
        android:layout_marginRight="100dp" />

</RelativeLayout>

Dengan design diatas kita akan menampilkan email primary pada TextView txtPrimaryAccount dan akan menampilkan seluruh data email pengguna pada spinner.

Khusus untuk primary account email. Pada dasarnya belum ada metode atau cara untuk mengambil dan menentukan mana yang menjadi email primary dari setiap devices user. Oleh sebab itu dalam hal ini saya berasumsi bahwa email yang pertama kali ditambahkan di smartphone adalah email utamanya, jadi untuk menemukan email utama dari user tersebut saya saya akan menampilkan data email yang pertama.

Di bawah ini adalah metode yang saya lakukan untuk mengambil data email primary dari user :

String emailId = getEmiailID(getApplicationContext());
   private String getEmiailID(Context context) {
        AccountManager accountManager = AccountManager.get(context);
        Account account = getAccount(accountManager);
        if (account == null) {
            return null;
        } else {
            return account.name;
        }
    }

    private static Account getAccount(AccountManager accountManager) {
        Account[] accounts = accountManager.getAccountsByType("com.google");
        Account account;
        if (accounts.length > 0) {
            account = accounts[0];
        } else {
            account = null;
        }
        return account;
    }

Sementara itu untuk menampilkan seluruh email user di spinner saya membuat method pada class java seperti ini :

    public void addEmailToSpinner(Context context) {
        AccountManager accountManager = AccountManager.get(context);
        Account[] accounts = accountManager.getAccountsByType("com.google");
        List<String> list = new ArrayList<String>();
        for (Account account : accounts) {
            list.add(account.name);
        }

        Spinner spEmail = (Spinner) findViewById(R.id.spinnerEmail);
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, list);
        dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spEmail.setAdapter(dataAdapter);
    }

Dengan kombinasi dari code diatas, maka kita telah berhasil membuat aplikasi Android untuk membaca email dari user Android kita. Untuk mencobanya, Anda dapat download contoh source code dari Github saya.

Download Source Code From GitHub

Sekian dan semoga bermanfaat.

 

CATATAN : Khusus untuk API 23 keatas atau android 6. Permission untuk mengambil data email (GET_ACCOUNTS) ini memerlukan pengaturan permisi setiap aplikasi, jadi tidak langsung bisa bekerja.

Baca Tutorial Android Lainnya :