Intent Url Filter Pattern nur auf den Root Pfad

  • Antworten:8
  • OffenNicht stickyNicht beantwortet
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.177

16.05.2015, 12:36:06 via Website

Hallo :)
Gibt es einen Weg die Url für den IntentFilter einzuschrenken?
Beispiel:
url: http://example.com/index

<data
                android:host="*.example.com"
                android:path="/"

                 android:scheme="http" />

Soweit so gut, funktioniert auch, aber jetzt will ich alle Pfade, welche auf Unterordner verweisen, ausschließen.
Bisher tut dieses Intent Filter auch noch mt http://example.com/test/index.
Und genau das will ich auschließen, es sollen nur alle Urls geöffnen werden, welche direkt im Root der Webseite Liegen.
Das Problem ist, dass android:pathPattern keine Vollständige RegularExpression unterstützt... sonst könnte man ja einfach sagen dass im Pfad alle Zeichen bis auf Slashes erlaubt sind [^/]*.

Geht das irgendwie bzw. hat das schonmal jemand gelöst?

Edit: Wenn das Root Verzeichnis als Pfad angegeben ist dann werden Links wie http://example.com/test-123 auch nicht erkannt...

— geändert am 16.05.2015, 13:50:31

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 72

16.05.2015, 16:10:51 via Website

Du kannst dafür pathPattern verwenden, aber es gibt einige Unterschiede bei dem Regex.

http://stackoverflow.com/questions/29422086/regex-in-intent-filter-of-android-manifest
http://stackoverflow.com/questions/4762251/android-matching-a-url-pattern

path definiert nur einen Path ohne Regex, wenn du statt path pathPattern verwendest, kannst auch auch Regex verwenden.

— geändert am 16.05.2015, 16:18:23

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.177

16.05.2015, 16:13:21 via Website

Ja auch, aber man kann auch auf Urls etc. reagieren und falls ein link auf eine bestimmte URL zeigt statt den Link seine App öffnen lassen.
Genaus das habe ich auch vor.
Das das so wie isch das ganze Ursprünglich erstellen wollte nicht funktioniert, da hier kein vollständiges RegXP eingabaut ist, werde ich das jetzt mit einem Broadcast Receiver machen, der dann zwischen den einzelnen Activities vermittlet.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 72

16.05.2015, 16:19:17 via Website

Das habe ich auch gerade gemerkt. :D
Ich habe deshalb meinen Beitrag bearbeitet. :D

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.177

16.05.2015, 16:22:04 via Website

Das bringt nichts, das ist so unhandlich und du kannst keine Zeichen etc. ausschließen.
Ich denke über einen BroadcastReciever ist das auf Dauer die bessere Lösung

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 72

16.05.2015, 16:29:53 via Website

Wird dieser denn dann in der Liste mit angezeigt?
Ich vermute mal, du willst den User auswählen lassen, ob er die Website im Browser oder mit deiner App öffnet.
Android hat aber nur die Liste mit allen Intent Filters und zeigt dann diese Intents und Activities an, zu denen die Website passt.
Wenn du einen Broadcast Receiver verwendest, müsstest du das Event ja dann weiterleiten, oder?

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.177

16.05.2015, 16:31:42 via Website

Soweit bin ich noch nicht ;)
Ich melde mich wieder wenn ich den Broadcast Receiver mal implemntiert habe.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.177

16.05.2015, 18:11:35 via Website

Neue Erkenntnis :( : Der BroacastReceiver kann keine View&Browsable intents behandlen..
Jezt muss ich das ganze mit einer Anctivity lösen, welche dann an andere weiterleitet.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 72

27.05.2015, 14:26:04 via Website

Das habe ich gemeint. :D
Der BroadcastReceiver gehört eig. zum ContentProvider, er erhält nur Daten von Events und verarbeitet und speichert diese bzw. leitet diese an eine Activity weiter. :D

— geändert am 27.05.2015, 14:26:14

Antworten

Empfohlene Artikel