2

Je suis un débutant avec les fournisseurs de contenu et j'ai fait référence à this document afin de comprendre et de créer un fournisseur de contenu personnalisé.Fournisseur de contenu - multiple où les paramètres

J'ai des chemins comme celui-ci dans la classe de descripteurs de contenu pour fournisseur de contenu:

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

Avec le code ci-dessous, je suis en mesure de récupérer les données des colonnes dont j'ai besoin, sans aucun problème:

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(); 
    } 

Je ne sais pas, comment je peux récupérer des données en utilisant une condition where ici. c'est à dire; Si j'ai besoin d'ajouter une condition comme WHERE user_profile_number = 2 and pkg_name = 'abc', comment puis-je gérer cela avec le code ci-dessus.

Toute aide est très appréciée.

Répondre

0

Utilisez

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); 

la fonction utilisée ici est

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

+1

Vous pouvez également utiliser des arguments de sélection si vous n'êtes pas sûr de ce qui va venir dans les valeurs de la clause where. – anon

4

Lorsque vous utilisez la déclaration ci-dessous puis appelez PATH dans le fournisseur de contenu

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

Si vous vouloir appeler des données basées sur ID cela signifie que vous voulez appeler PATH_FOR_ID puis utilisez

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