2013-05-08 11 views
5

Próbuję ustawić filtr zamiar uruchomić moją aktywność, gdy użytkownik kliknie na następującym URI: example.com/pathA/pathB/#pathC/someGUIDIntent PRZEDR_SCIEZKI filtr z „#” nie działa

Dodałem więc następujące XML do pliku manifestu:

<intent-filter> 
    <action android:name="android.intent.action.VIEW" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <category android:name="android.intent.category.BROWSABLE" /> 

    <data 
     android:host="example.com" 
     android:pathPrefix="/pathA/pathB/#pathC" 
     android:scheme="http" /> 
</intent-filter> 

myślę, że char się „#” jest brudząc wszystko, czym się jednak Próbowałem uciec ten char bez powodzenia. Jakieś pomysły?

UPDATE: kiedy powiedział: "Próbowałem uciec" miałem na myśli używając procent kodowanie (# równa 23%)

Odpowiedz

10

Intent filtry używać UriMatcher do analizowania URI i określić, czy jest to mecz. # jest wieloznacznikiem URI dla liczby, jak widać w przykładach w UriMatcher. Zgodnie z UriMatcher source code, nie ma sekwencji ucieczki, aby uciec # w URI. Dlatego powinieneś użyć innego, niezarezerwowanego symbolu (pamiętaj, że * jest również zarezerwowany jako symbol wieloznaczny dla dowolnego tekstu).

+0

Oznacza to, że pathPattern również nie zadziała, prawda? –

+1

@ user1774914 - po prawej - wydaje się, że nie ma sposobu na obsługę identyfikatora URI z "#" w nim. Z pewnością można sobie poradzić z '/ pathA/pathB /' i ręcznie sprawdzić pozostałą część identyfikatora URI dla '# pathC', ale pojawi się on w systemie, który obsługuje również identyfikator URI, taki jak'/pathA/pathB/pathD' – ianhanniballake

+0

Dziwne jest to, że androidowi docs ... Ponieważ "\" jest używane jako znak ucieczki, gdy łańcuch jest odczytywany z XML (zanim zostanie sparsowany jako wzorzec), będziesz musiał dwukrotnie uciec: na przykład literał "*" zostanie zapisany jako "\\ *", a literał "\" zostanie zapisany jako "\\\\". Jest to zasadniczo to samo, co byś musiał napisać, jeśli tworzysz ciąg znaków w kodzie Java. – a54studio

Powiązane problemy