Как получить контактное имя с его номером
Я пытаюсь разработать простое приложение, использующее Android Scripting и Python.
Теперь у меня есть номер телефона, и я хочу узнать, какой контакт имеет этот номер. Я могу делать контактыGet() и искать номера, но так много программ использует эту функцию, я думаю, что для этого есть более простой способ.
Есть вопрос с той же проблемой, но Java, есть ли эквивалент Python?
Поиск контакта по телефону
Есть ли простой способ достичь этого?
Приветствуется любой пример кода.
Измените, после нескольких дней без ответа, я решил немного изменить вопрос: что является лучшим способом для поиска номера для списка, который я получил с контактамиGet()?
Ответы
Ответ 1
Это обычная проблема со слоями абстракции. Слой не абстрагирует определенную функциональность, инструмент или случай, который вы хотели бы использовать. В этом случае, однако, похоже, что не всякая надежда потеряна. Похоже, что скрипт android для скриптов android - проект с открытым исходным кодом. Почему бы не внести патч, который обеспечил бы эту способность проекту?
Я могу вносить такой патч в какой-то момент в будущем, но если это важно для вас, вы можете сделать то же самое до того, как я это сделаю, и быть на вашем пути!
Ответ 2
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;
}
}
}
Ответ 3
Возможно, вам стоит взглянуть на таблицу ContactsContract data. Запросите его примерно так:
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)
Ответ 4
Вы можете попробовать, если этого еще не сделали, Contact API: http://developer.android.com/resources/articles/contacts.html