Des Filtres d'intention et android:pathPattern
Dans ma demande, je veux gérer des liens qui utilisent le modèle suivant:
scheme://host/folder1/folder2/folder3/folder4/article
Je l'ai eu à travailler temporairement, en utilisant les éléments suivants:
<intent-filter>
<data android:scheme="http" />
<data android:host="www.laprensa.com.ni" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
Cependant, comme vous pouvez l'imaginer qui s'ouvre sur un lien qui commence par scheme://host
, et je veux m'assurer de ne ramasser sur celles qui sont indiquées ci-dessus, par lequel la page est de 4 dossiers à l'intérieur de l'hôte.
Un autre petit problème, c'est que les noms de dossier ne sont jamais les mêmes, et donc je ne peut pas simplement utiliser android:path
. Il est également intéressant de noter que le android:pathPrefix
n'est pas la même, comme les trois premiers dossiers sont liées à la date de.
Par exemple, les url sont strucutred quelque chose comme ceci:
scheme://host/year/month/day/articleType/article
J'ai lu les docs et des questions sur la façon d'utiliser android:pathPattern
mais je ne comprends vraiment pas ce que je suis censé taper.
Des idées?
Merci!
MODIFIER
À la suggestion, j'ai essayé:
android:pathPattern="/.*/.*/.*/.*/.*"
Où chaque '.*' représenté un dossier, mais qui semble toujours chercher les autres URLs qui ne sont pas des articles. Par exemple, voici deux url différentes:
Url je veux poignée:
http://www.laprensa.com.ni/2013/05/10/vida/145996-lionel-richie-defiende-a
Url je ne veux pas gérer
http://www.laprensa.com.ni/2013/05/10/vida/
Je crois que le problème ici est que les deux ont le même nombre de niveaux, la seule différence est que l'on a réellement quelque chose après que la dernière '/'
, toutes les autres idées que je peux essayer? J'ai essayé en ajoutant encore une '/.*'
mais qui a cessé de fonctionner complètement et l'application arrêté de la manipulation de tous les liens de la période 🙁
daniel_c05 Comment avez-vous finalement le résoudre?
OriginalL'auteur daniel_c05 | 2013-05-10
Vous devez vous connecter pour publier un commentaire.
Vous êtes à proximité, mais l'absence de la partie finale. Cela devrait fonctionner pour vous:
android:pathPattern="/.*/.*/.*/.*/..*"
Cela correspond à aucune des chemins avec quatre répéter
/[anything]
ainsi que de faire valoir ce que vous devez avoir quelque chose après la finale/
.Tout comme vous avez demandé:
Explication
La
.
applique un modèle de "l'un de n'importe quel caractère".Le
.*
applique quel que soit le nombre (ou pas!) de n'importe quel caractère".La combinaison de ces deux,
..*
applique "n'importe quel nombre de caractères, mais au moins doit être prévu"OriginalL'auteur ccpmark
Vous devez ajouter exactement la
android:pathPattern
attribut de configuration que vous avez défini.Comme indiqué dans Android documentation,
android:pathPattern
peut contenir des caractères génériques suivants pour la construction simplifiée des expressions régulières:Dans votre cas:
Où chaque .* représenter un nom de dossier.
Malheureusement, les jokers utilisés pour
android:pathPattern
sont un sous-ensemble réduit de commun avec les expressions régulières. En se basant sur la documentation, il n'est pas possible de répondre à votre besoin uniquement à l'aide deandroid:pathPattern
. Considérant que vous essayez d'accéder à des documents, vous pouvez essayer d'exploiter l'attribut supplémentaireandroid:mimeType
. De là, vous pouvez utiliser la valeurtext/*
ou par exempletext/html
.OriginalL'auteur thetonrifles