2010-09-20 19 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 
相關問題