如何通过他/她的号码获取联系人姓名

时间:2011-05-15 16:56:16

标签: android python android-scripting

我正在尝试使用Android Scripting和Python开发一个简单的应用程序。

现在,我有一个电话号码,我想找出哪个联系人有这个号码。我可以做一个contactsGet()并搜索数字,但是有很多程序使用这个功能,我认为有一种更简单的方法。

有一个问题存在同样的问题,但Java,是否有Python等价物? Search contact by phone number

有没有一种简单的方法可以实现这一目标?

赞赏任何示例代码。

编辑,几天后没有回答,我决定稍微改变一下这个问题:搜索一个号码的最佳方法是什么,我通过contactsGet()得到了一个列表?

4 个答案:

答案 0 :(得分:1)

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;
        }
    }
}

答案 1 :(得分:1)

这是抽象层的常见问题。该图层不会抽象您要使用的特定功能,工具或案例。然而,在这种情况下,似乎并非所有希望都失去了。看来android脚本api是一个开源项目。为什么不提供能够为项目提供此功能的补丁?

我可能会在将来的某个时候提供这样的补丁,但是如果它对你很重要,你可以在我做之前做同样的事情,然后继续前进!

答案 2 :(得分:0)

您可能需要查看ContactsContract data table。用以下内容查询:

    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)

答案 3 :(得分:0)

您可以尝试(如果尚未使用)联系API:http://developer.android.com/resources/articles/contacts.html