如何通过电话号码获取联系人姓名

20

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

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

有一个相同问题的帖子,但是是关于Java的,是否有Python等效方法? 按电话号码搜索联系人

有没有简单实现这个的方法?

任何示例代码都将不胜感激。

编辑,在几天没有答案之后,我决定稍微改变一下问题:有什么最好的方法可以搜索我通过contactsGet()得到的列表中的电话号码?

4个回答

1

抽象层面的问题很常见。该层未对您想要使用的特定功能、工具或情况进行抽象。然而,在这种情况下,似乎并非一切都已经失去希望。Android脚本API是一个开源项目,为什么不贡献一个补丁来提供此功能呢?

我可能会在将来某个时候贡献这样的补丁,但如果这对您很重要,您可以在我之前做同样的事情,并且走上您的道路!


这是唯一一个包含可能解决我的问题的答案 :). 看来没有其他办法。谢谢 :). - utdemir

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
问题是它的Python等效版本。 - utdemir

0

0
你可能想要查看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)

1
android-scripting API没有提供类似这样的功能。以下是它提供的内容:http://code.google.com/p/android-scripting/wiki/ApiReference - utdemir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接