2010-09-20 30 views
39

我想知道getContentResolver()被调用的上下文吗?在Android中如何调用getContentResolver()?

我有这样的场景:
我有一个活动A,调用类B的方法myFunc()这不是一个活动。
所以,在B班我必须使用getContentResolver()。我直接打电话给getContentResolver()。它显示错误。然后我从活动中调用了myFunc(Acitivy act),并调用了act.getContentResolver(),这解决了我的问题。这是调用getContentResolver()的唯一方式,这意味着它可以在活动中使用,也可以单独使用。

回答

72

getContentResolver()是类android.content.Context的方法,所以要调用它,您肯定需要Context(例如Activity或Service)的实例 。

22

你可以使用这样的:

getApplicationContext().getContentResolver() 

与适当的上下文。

+19

'getApplicationContext()'是未定义的,当您必须在不是Activity的类中使用它时。 – 2013-12-16 16:16:46

+0

是的,在这种情况下,你不能使用这种方式 – 2016-07-22 11:57:21

+0

从片段的上下文,你可以使用getActivity()。getContentResolver() – 2017-10-19 18:30:54

6

当您使用Cursor对象查询Contact时,也会使用getContentResolver()方法。我使用getContentResolver()来查询Android手机Contacts应用程序,寻找来自某人电话号码的联系信息,以包含在我的应用程序中。查询中的不同元素(如下所示)表示您想要的联系方式的详细类型,以及是否需要订购等。这里有另一个example

来自Android文档的Content Provider Basics页面。

// Queries the user dictionary and returns results 
mCursor = getContentResolver().query(
    UserDictionary.Words.CONTENT_URI, // The content URI of the words table 
    mProjection,      // The columns to return for each row 
    mSelectionClause     // Selection criteria 
    mSelectionArgs,      // Selection criteria 
    mSortOrder);      // The sort order for the returned rows 
相关问题