2

我是內容提供商的新手,我一直在參考this文檔以瞭解和創建自定義內容提供者。內容提供商 - 多個參數

我對內容提供商的內容描述符類這樣的路徑:

public static final String PATH = "tbl_reco_index_contents"; 
public static final String PATH_FOR_ID = "tbl_reco_index_contents/*"; 

有了下面的代碼,我能夠獲取從中我需要的列中的數據,沒有任何問題:

public static final String AUTHORITY = "com.nyk.launcherprovider"; 
private static final Uri BASE_URI = Uri.parse("content://" + AUTHORITY); 
public static final String PATH = "tbl_reco_index_contents"; 
public static final Uri CONTENT_URI = BASE_URI.buildUpon().appendPath(PATH).build(); 
    cur = this.getContentResolver().query(CONTENT_URI, new String[]{ 
      "reco_index_content_name", 
      "reco_index_content_url" 
     }, null, null, null); 

    cur.moveToFirst(); 
    for(int i=0;i<cur.getCount();i++){ 
     System.out.println("Name is:"+cur.getString(10)); 
     System.out.println("URL is:"+cur.getString(11)); 
     cur.moveToNext(); 
    } 

我不知道,我怎麼可以在這裏使用where條件來獲取數據。即;如果我需要添加如WHERE user_profile_number = 2 and pkg_name = 'abc'這樣的條件,我該如何處理以上代碼。

任何幫助,非常感謝。

回答

0

使用

cur = this.getContentResolver().query(CONTENT_URI, new String[]{ 
     "reco_index_content_name", 
     "reco_index_content_url" 
    }, "user_profile_number = 2 and pkg_name = 'abc'", null, null, null, null); 

這裏使用的功能是

public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)

+1

您還可以使用選擇的參數,如果你不知道什麼會在where子句中的值的數據。 – anon

4

當您使用波紋管的語句,然後調用它PATH在內容提供商

Cursor cursor = getContentResolver().query(YOUR_URI, null, "user_profile_number = ? AND pkg_name = ? ", new String[]{"2", "abc"}, null); 

如果您想要調用基於ID就意味着你要撥打PATH_FOR_ID 然後用

Cursor cursor = getContentResolver().query(ContentUris.withAppendedId(CONTENT_URI, id), null, null, null, null);