自从过去几天以来,我一直在寻找一种方法,使用我已经存储在变量中的电话号码来检索联系人姓名,不幸的是,到目前为止我找到的所有内容似乎都在使用已弃用的函数/调用。
当然,我尝试以自己的方式做到这一点,但我觉得我的Android / JAVA知识还不足以理解这个概念,在我尝试运行任何东西时不断出现一些错误或强行关闭。
到目前为止,我能找到的最好的东西是这样的:
public String getContactName(final String phoneNumber)
{
Uri uri;
String[] projection;
if (Build.VERSION.SDK_INT >= 5)
{
uri = Uri.parse("content://com.android.contacts/phone_lookup");
projection = new String[] { "display_name" };
}
else
{
uri = Uri.parse("content://contacts/phones/filter");
projection = new String[] { "name" };
}
uri = Uri.withAppendedPath(uri, Uri.encode(phoneNumber));
Cursor cursor = context.getContentResolver().query(uri, projection, null, null, null);
String contactName = "";
if (cursor.moveToFirst())
{
contactName = cursor.getString(0);
}
cursor.close();
cursor = null;
return contactName;
}
但是通过使用这段代码,Eclipse告诉我:上下文无法解决。 我发现很多代码和解释都是使用这个 Context 的东西,但是在阅读之后我仍然不理解它:What is 'Context' on Android?
任何帮助将不胜感激, 非常感谢你
答案 0 :(得分:0)
如果您在活动中使用此功能,那么使用this
即可获得上下文。所以基本上在这里,不是拨打context.getContentResolver()
,而是拨打this.getContentResolver()
或只是getContentResolver()
。
Eclipse抱怨基本上是因为你试图调用一个名为context
的方法,Eclipse不知道这个方法,因为它没有在任何地方声明。如果你之前做过类似Context context = this;
的事情,那会很有用,但那真的没用。
getContentResolver()
是由Activity
声明和定义的方法,它是您的活动扩展的类,因此您可以像这样调用它。
我希望它有所帮助。至于这个上下文到底是什么,我很抱歉,但我无法帮助你,因为我甚至不确定我是否理解正确。
此外,请注意,我没有检查您发布的代码,我不知道它是否适用于从电话号码获取联系人姓名。只是想帮你摆脱上下文无法解决错误。