Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
MODifikaTOR18
0 / 0 / 1
Регистрация: 26.05.2016
Сообщений: 80
Завершенные тесты: 1
#1

Получить номер телефона контакта по имени - Программирование Android

11.04.2017, 14:50. Просмотров 315. Ответов 4
Метки нет (Все метки)

Здравствуйте, делаю контактную книжку (работа с системным файлом контактов). Необходимо по клику на контакт открыть новую активность, передать в неё имя контакта и по имени вытянуть нужную информацию на экран. Имя передаётся, но дальше всё ложится:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_single_contact_activity);
 
        Log.w("Начинаю работу", "");
 
        nameEText = (EditText) findViewById(R.id.cont_name);
        phoneEText = (EditText) findViewById(R.id.cont_phone);
        phoneEType = (Spinner) findViewById(R.id.cont_phone_type);
 
        String name = getIntent().getExtras().getString("contact_name");
 
        Log.w("Event log", "Данные взяты");
 
        Cursor c = getContentResolver().query(
                ContactsContract.Contacts.CONTENT_URI,
                new String[] {ContactsContract.Contacts._ID},
                ContactsContract.Contacts.DISPLAY_NAME + " = '" + name + "'", null, null);
        Log.w(LOG_TAG, "Запрос построен");
 
        if(c.getCount() > 0) {
                Log.w("Heil to the developer", "I've found this phone");
                while (c.moveToFirst()) {
                    String ID = c.getString(c.getColumnIndex(ContactsContract.Contacts._ID)); //на этой строке выполнение кода прекращается 
                    if (Integer.parseInt(c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
                        Cursor pc = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
                                ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[]{ID}, null);
                        Log.w(LOG_TAG, "Перехожу к номерам");
 
                        while (pc.moveToNext()) {
                            String nomer = pc.getString(pc.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                            Log.e(LOG_TAG, nomer);
                        }
                        pc.close();
                    }
                }
 
                Log.w("Номер телефона", nomer);
 
                nameEText.setText(name);
                phoneEText.setText(nomer);
 
                c.close();
 
        } else {
            Log.w("Heil to the developer", "Phone doesn't exist");
        }
        c.close();
    }
И в логе пишет такую ошибку:
Java
1
04-11 14:47:14.144 28962-28962/com.diplom.modifikator.organizer E/CursorWindow: Failed to read row 0, column -1 from a CursorWindow which has 1 rows, 1 columns.
Как мне решить проблему?
http://www.cyberforum.ru/android-dev/thread1943557.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2017, 14:50
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Получить номер телефона контакта по имени (Программирование Android):

Как получить свой номер телефона из веб риложения
Приветствую! Собственно задача следующая: нужно в веб приложении, запущенном в...

Выбор нужного номера телефона у контакта
Здравствуйте! Мне нужно сделать выбор нужного контакта и вывод его номера в...

Преобразование имени контакта в строку
Добрый день! С помощью примера из SDK извлек имена контактов. private Cursor...

Как получить данные контакта из Contact Provider
Подскажите как получить все данные из Contact Provider относящиеся к...

Серийный номер телефона
Подскажите, как получить серийный номер телефона (11-значный) в том виде, как...

4
demixdn
284 / 231 / 68
Регистрация: 31.10.2016
Сообщений: 557
11.04.2017, 15:18 #2
Цитата Сообщение от MODifikaTOR18 Посмотреть сообщение
ContactsContract.Contacts.CONTENT_URI
Цитата Сообщение от MODifikaTOR18 Посмотреть сообщение
ContactsContract.CommonDataKinds.Phone.CONTENT_URI
может из-за этого?
Цитата Сообщение от MODifikaTOR18 Посмотреть сообщение
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
тоже самое
1
MODifikaTOR18
0 / 0 / 1
Регистрация: 26.05.2016
Сообщений: 80
Завершенные тесты: 1
11.04.2017, 16:51  [ТС] #3
demixdn, а на что эти строки заменить?
0
petruchodd
11.04.2017, 17:57
  #4

Не по теме:

интересно

0
demixdn
284 / 231 / 68
Регистрация: 31.10.2016
Сообщений: 557
11.04.2017, 18:19 #5
Лучший ответ Сообщение было отмечено MODifikaTOR18 как решение

Решение

MODifikaTOR18, нашел проблему. проблема в том, что вы составляете запрос и указываете, что хотите получить только поле "new String[] {ContactsContract.Contacts._ID}", а после вытягиваете из этого ответа совершенное другое поле которое
Цитата Сообщение от MODifikaTOR18 Посмотреть сообщение
c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)
подставьте в вместо первого null и все пойдет как надо.
Вторая проблема, у вас бесконечный цикл:
Цитата Сообщение от MODifikaTOR18 Посмотреть сообщение
while (c.moveToFirst())
Поставьте там if, и во втором случае if и все сработает один раз.
И научитесь пользоваться дебаггером.
1
11.04.2017, 18:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2017, 18:19
Привет! Вот еще темы с решениями:

Можно ли вытащить номер телефона?
Доброго всем времени суток дорогие Форумчане!!1 У меня к вам вопрос, можно...

Узнать программно номер телефона
Как узнать программно номер телефона android если номер пользовательского...

Однократно ввести номер телефона, и в дальнейшем не выводить
В приложении необходимо однократно ввести номер телефона, и в дальнейшем не...

Проверить корректность введенных данных в editText (номер телефона)
Как проверить, что пользователь ввел правильный номер телефона, без +7 и 8,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru