У меня есть необходимость при нажатии на кнопку переходить в контакты и извлекать список контактов с именами, метод который извлекает контакты рабочий. Я данный метод реализовал для первого Activity(layout-экрана), но у меня есть такая же кнопка и на другом экране с таким же функционалом (переходить в контакты и извлекать список). Отсюда вопрос можно ли этот метод вызвать из другого Activity или придется copypaste метод для нового Activity? P.S. при этом переходить на другой layout не надо P.s.s ниже представлен сам метод который я хочу вызвать из другого Activity
public void getContacts() {
this.spisokKontaktov=new HashMap<String,String>();
this.nameNomer=new HashMap<String,String>();
String phoneNumber = null;
String nameKontakt="";
String numberKontakt="";
//Связываемся с контактными данными и берем с них значения id контакта, имени контакта и его номера:
Uri CONTENT_URI = ContactsContract.Contacts.CONTENT_URI;
String _ID = ContactsContract.Contacts._ID;
String DISPLAY_NAME = ContactsContract.Contacts.DISPLAY_NAME;
String HAS_PHONE_NUMBER = ContactsContract.Contacts.HAS_PHONE_NUMBER;
Uri PhoneCONTENT_URI = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
String Phone_CONTACT_ID = ContactsContract.CommonDataKinds.Phone.CONTACT_ID;
String NUMBER = ContactsContract.CommonDataKinds.Phone.NUMBER;
ContentResolver contentResolver = getContentResolver();
Cursor cursor = contentResolver.query(CONTENT_URI, null,null, null, null);
//Запускаем цикл обработчик для каждого контакта:
if (cursor.getCount() > 0) {
//Если значение имени и номера контакта больше 0 (то есть они существуют) выбираем
//их значения в приложение привязываем с соответствующие поля "Имя" и "Номер":
while (cursor.moveToNext()) {
String contact_id = cursor.getString(cursor.getColumnIndex( _ID ));
String name = cursor.getString(cursor.getColumnIndex(DISPLAY_NAME));
int hasPhoneNumber = Integer.parseInt(cursor.getString(cursor.getColumnIndex(HAS_PHONE_NUMBER)));
//Получаем имя:
if (hasPhoneNumber > 0) {
nameKontakt=name;
Cursor phoneCursor = contentResolver.query(PhoneCONTENT_URI, null,
Phone_CONTACT_ID + " = ?", new String[] { contact_id }, null);
//и соответствующий ему номер:
while (phoneCursor.moveToNext()) {
phoneNumber = phoneCursor.getString(phoneCursor.getColumnIndex(NUMBER));
numberKontakt=phoneNumber;
this.spisokKontaktov.put(numberKontakt, nameKontakt);
this.nameNomer.put(nameKontakt, numberKontakt);
Log.i(TAG, "контакт с именем"+nameKontakt+numberKontakt);
}
}
}
}
}
Вы можете создать небольшой класс активити с реализацией этого метода (можно переписать его так, чтобы он возвращал не войд, а список контактов в виде HashMap). Затем наследуйте от этого класса классы ваших двух активностей.
Или можете сделать этот метод публичным и статическим (так тоже рекомендую переписать его, чтобы он возвращал не войд, а список контактов в виде HashMap) В другом активити вызывать его вот так:
HashMap<string, string> contacts = YourActivityName.getContacts();
Можно создать класс модели Contact, добавить в него необходимые поля, и возвращать массив этих контактов, как описано здесь: ответ на английском stackoverflow
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
В общем создал BottomNavigationBar ActivityВ нем еще два фрагмента разделенная через Tabbed menu