Как я могу получить контактное имя с его / ее номером - PullRequest
20 голосов
/ 15 мая 2011

Я пытаюсь разработать простое приложение с использованием Android Scripting и Python.

Теперь у меня есть номер телефона, и я хочу выяснить, у какого контакта есть этот номер. Я могу сделать contactsGet () и искать номера, но так много программ используют эту функцию, которая, я думаю, есть более простой способ для этого.

Есть вопрос с той же проблемой, но Java, есть ли эквивалент Python? Поиск контакта по номеру телефона

Есть ли простой способ добиться этого?

Любой пример кода приветствуется.

Правка, после нескольких дней без ответа я решил немного изменить вопрос: каков наилучший способ поиска номера для списка, который я получил с помощью contactsGet ()?

Ответы [ 4 ]

1 голос
/ 24 мая 2011

Это общая проблема со слоями абстракции. Слой не абстрагирует конкретную функциональность, инструмент или случай, который вы хотели бы использовать. В этом случае, однако, кажется, что не вся надежда потеряна. Похоже, что Android скриптинг API является проектом с открытым исходным кодом. Почему бы не добавить патч, который бы предоставил эту возможность проекту?

Я могу добавить такой патч в какой-то момент в будущем, но если он важен для вас, вы можете сделать то же самое, прежде чем я, и быть на вашем пути!

1 голос
/ 23 мая 2011
package com.slk.example.CursorActivity;
import android.app.ListActivity;
import android.content.Context;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.Contacts.Phones;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CursorAdapter;
import android.widget.TextView;

public class CursorActivity extends ListActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Cursor contactsCursor = this.managedQuery(Phones.CONTENT_URI, null, null, null, null);
        this.setListAdapter(new MyContactsAdapter(this,contactsCursor));
    }

    private class MyContactsAdapter extends CursorAdapter{
        private Cursor mCursor;
        private Context mContext;
        private final LayoutInflater mInflater;

        public MyContactsAdapter(Context context, Cursor cursor) {
            super(context, cursor, true);
            mInflater = LayoutInflater.from(context);
            mContext = context;
        }

        @Override
        public void bindView(View view, Context context, Cursor cursor) {
            TextView t = (TextView) view.findViewById(R.id.txtName);
            t.setText(cursor.getString(cursor.getColumnIndex(Phones.NAME)));

            t = (TextView) view.findViewById(R.id.txtDisplayName);
            t.setText(cursor.getString(cursor.getColumnIndex(Phones.DISPLAY_NAME)));

            t = (TextView) view.findViewById(R.id.txtPhone);
            t.setText(cursor.getString(cursor.getColumnIndex(Phones.NUMBER)));
        }

        @Override
        public View newView(Context context, Cursor cursor, ViewGroup parent) {
            final View view = mInflater.inflate(R.layout.main, parent, false);
            return view;
        }
    }
}
0 голосов
/ 24 мая 2011

Вы можете попробовать, если еще не сделали, API Контакта: http://developer.android.com/resources/articles/contacts.html

0 голосов
/ 23 мая 2011

Возможно, вы захотите взглянуть на таблицу данных ContactsContract .Запросите что-то вроде этого:

    Cursor c = getContentResolver().query(Data.CONTENT_URI,
         new String[] {Data._ID, Phone.NUMBER, Phone.TYPE, Phone.LABEL},
                       Data.RAW_CONTACT_ID + "=?" + " AND "
                       + Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE + "'",
                       new String[] {String.valueOf(rawContactId)
         }, null)
...