Signification de android.content.UriMatcher

Qu’est-ce que Uri Matcher dans android.content.UriMatcher

Comment l’utiliser? Quelqu’un peut-il s’il vous plaît expliquer le sens de suivre trois lignes de code?

  uriMatcher = new UriMatcher(UriMatcher.NO_MATCH); uriMatcher.addURI(PROVIDER_NAME, "cte", uriCode); uriMatcher.addURI(PROVIDER_NAME, "cte/*", uriCode); int res = uriMatcher.match(uri); 

UriMatcher est une classe pratique lorsque vous écrivez un ContentProvider ou une autre classe qui doit répondre à un certain nombre d’URI différents. Dans votre exemple, un utilisateur peut interroger votre fournisseur avec des URI tels que:

 myprovider://cte 

ou

 myprovider://cte/somessortingng 

Lorsque vous construisez un UriMatcher, vous devez avoir des codes distincts pour chaque URI (pas seulement “uriCode” comme dans votre exemple). Je rends généralement mon instance UriMatcher statique et ajoute les URI dans un constructeur statique:

 private static final int CTE_ALL = 1; private static final int CTE_FIND = 2; private static final UriMatcher uriMatcher = new UriMatcher(UriMatcher.NO_MATCH); static { uriMatcher.addURI(PROVIDER_NAME, "cte", CTE_ALL); uriMatcher.addURI(PROVIDER_NAME, "cte/*", CTE_FIND); } 

Ensuite, dans votre fournisseur de contenu, vous feriez quelque chose comme ceci dans votre méthode de requête:

 Cursor query(Uri uri, Ssortingng[] projection, Ssortingng selection, Ssortingng[] selectionArgs, Ssortingng sortOrder) { int res = uriMatcher.match(uri); switch (res) { case CTE_ALL: //TODO create a results Cursor with all the CTE results break; case CTE_FIND: //TODO create a results Cursor with the single CTE requested break; } return results; } 

J’ai trouvé les vidéos suivantes utiles:

Bases de l’URI

URI Matcher

Essentiellement, vous essayez d’avoir un identifiant ou un numéro associé à différents URI. Lorsque vous utilisez addUri, un code / numéro / ID est créé pour l’URI. Lorsque vous demandez une correspondance (), le code correspondant est renvoyé.