如何根据号码获取联系人姓名

20 投票
4 回答
3256 浏览
提问于 2025-04-16 17:40

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

现在,我有一个电话号码,我想找出哪个联系人有这个号码。我可以使用contactsGet()来搜索号码,但很多程序都用这个功能,所以我觉得应该有更简单的方法。

有一个关于同样问题的提问,不过是用Java的,有没有Python的类似方法呢?通过电话号码搜索联系人

有没有简单的方法可以做到这一点呢?

如果有示例代码就太好了。

编辑:在几天没有得到答案后,我决定稍微改一下问题:用contactsGet()获取的列表中,搜索一个号码的最佳方法是什么?

4 个回答

0

如果你还没有尝试过,可以看看这个联系人API:http://developer.android.com/resources/articles/contacts.html

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

这是一个关于抽象层的常见问题。抽象层并没有隐藏你想用的特定功能、工具或情况。不过,这里似乎还有希望。看起来,安卓脚本API是一个开源项目。为什么不为这个项目贡献一个补丁,让它具备你需要的功能呢?

我可能在未来某个时候会贡献这样的补丁,但如果这对你很重要,你可以在我之前就去做,开始你的工作吧!

撰写回答