public synchronized void getContacts(Context context, final GetContactsListener listener) throws WhatsappNotInstalledException { if (isWhatsappInstalled()) { new AsyncTask<Void, Void, List<WContact>>() { @Override protected List<WContact> doInBackground(Void... params) { Shell.SU.run("am force-stop com.whatsapp"); db = SQLiteDatabase.openOrCreateDatabase(new File("/data/data/com.whatsapp/databases/wa.db"), null); List<WContact> contactList = new LinkedList<>(); String selectQuery = "SELECT jid, display_name FROM wa_contacts where phone_type is not null and is_whatsapp_user = 1"; Cursor cursor = db.rawQuery(selectQuery, null); if (cursor.moveToFirst()) { do { WContact contact = new WContact(cursor.getString(1), cursor.getString(0)); contactList.add(contact); } while (cursor.moveToNext()); } db.close(); return contactList; } @Override protected void onPostExecute(List<WContact> contacts) { super.onPostExecute(contacts); if (listener != null) { listener.receiveWhatsappContacts(contacts); } } }.execute(); } else throw new WhatsappNotInstalledException(); }