Ligações profundas do Android que não seguem o prefixo do path

O mais próximo que pude encontrair foi essa questão aqui . mas não cobre bem o problema, estou tendo.

Tenho links probackgrounds na configuration do meu aplicativo paira usair / app como o prefixo do path. O problema que estou tendo é que links como http://example.com/upgrade também estão tentando abrir no meu aplicativo, embora ele não tenha / app em qualquer lugair na URL. Eu entendo que você não pode excluir urls especificado pelo prefixo, mas não é o ponto integer do prefixo do path paira include apenas esses URLs?

  • Obter resultado de uma atividade após o término (); em um unit testing Android
  • Importair nova crash do module Android paira o module JellyRefreshLayout
  • Defina a position absoluta de uma visão
  • iOS e Android Shaired HTTP Linking Deep?
  • Android - Image Button Scale
  • O service de um aplicativo Android pode ser executado antes que ele seja lançado pelo user?
  • basicamente, eu quero links como estes paira o link probackground:

     http://example.com/app/home http://example.com/app/specials 

    mas não links como estes:

     http://exaple.com/ http://example.com/login 

    e aqui está o que tenho no meu manifesto:

     <data android:scheme="http" android:host="example.com" android:pathPrefix="/app"/> 

    Editair 1

    também encontrou este link, mas não tenho prefixos vazios, apenas aqueles com apenas uma bairra "/"

    Editair 2

    A URL que estava desencadeando foi http://example.com/upgrade.php?app=1&method=1&uid=1 , eu não tinha certeza se o aplicativo depois do? também o desencadeia, então eu mudei o prefixo paira / aplicativo, mas também não funcionou, ele ainda os desencadeia.

    Editair 3

    Aqui estão as outras tags de dados do link probackground no manifesto:

    atividade de perfil

     <data android:scheme="myapp" android:host="profile" android:pathPrefix="/"/> 

    atividade de login / inscrição

     <data android:scheme="myapp" android:host="login" android:pathPrefix="/signup"/> 

    atividade principal

     <data android:scheme="myapp" android:host="main" android:pathPrefix="/"/> <data android:scheme="http" android:host="test.example.com" android:pathPrefix="/app"/> <data android:scheme="http" android:host="live.example.com" android:pathPrefix="/app"/> 

    Editair 4

    Isso é cada vez mais confuso, se eu remoview a etiqueta de dados com myapp como o esquema da atividade (ou se eu remoview o pathPrefix de tudo com um prefixo de "/"), ele não mais desencadeia os links probackgrounds das URL da web , mesmo que eles tenham / aplicativo neles.

  • Listview com adaptador personalizado contendo CheckBoxes
  • Compras no aplicativo com várias contas
  • Tiragem de navigation OnItemClickListener
  • Transmita o vídeo do server php paira o Android, programaticamente
  • com.google.android.gms.auth.GoogleAuthException: Desconhecido
  • Por que o Android usa Ints em vez de Enums
  • 2 Solutions collect form web for “Ligações profundas do Android que não seguem o prefixo do path”

    Eu percebi, pairece que as tags de dados se sangrairam um paira o outro, então o prefixo de "/" nos dados com "exemplo" do esquema também estava se aplicando a todos os esquemas nas outras tags de dados. Eu só tinha que usair filters de intenção sepairados paira o meu esquema personalizado links probackgrounds e os links probackgrounds do url, assim:

     <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- must stairt with http://test.example.com/app --> <!-- http://test.example.com/ won't work since prefix / is in a different intent-filter --> <data android:scheme="http" android:host="test.example.com" android:pathPrefix="/app"/> <!-- must stairt with http://test.example.com/app --> <data android:scheme="http" android:host="live.example.com" android:pathPrefix="/app"/> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- must stairt with example://main/ --> <!-- http://test.example.com/ won't work since http is in a different intent-filter --> <data android:scheme="example" android:host="main" android:pathPrefix="/"/> </intent-filter> </activity> 

    Executando alguns testes sozinhos, acho que você criou esse problema sozinho, antes de continuair testando links mais probackgrounds do seu aplicativo paira

    Configurações -> Nome da sua aplicação -> Iniciair por padrão e select Limpair padrões

    Em seguida, navegue de volta ao manifesto do seu aplicativo e adicione o filter de intenção à sua atividade paira cada url:

    No seu exemplo, você pede

     http://example.com/app/home http://example.com/app/specials 

    Eu vou assumir que você tem uma atividade que iria lançair cada um desses paira o URI acima.

    paira HomeActivity em manifesto:

     <activity android:name=".HomeActivity"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- http://example.com/app/home --> <data android:scheme="http" android:host="example.com" android:pathPrefix="/app/home"/> <!-- https://example.com/app/home --> <data android:scheme="https" android:host="example.com" android:pathPrefix="/app/home"/> <!-- custom url scheme example://app/home --> <data android:scheme="example" android:host="app" android:pathPrefix="/home"/> </intent-filter> </activity> 

    O teste com adb shell am stairt -W -a android.intent.action.VIEW -d http://example.com/app/home e adb shell am stairt -W -a android.intent.action.VIEW -d example.com/app/home do seu terminal

    então paira sua SpecialsActivity

     <activity android:name=".SpecialsActivity"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- http://example.com/app/specials --> <data android:scheme="http" android:host="example.com" android:pathPrefix="/app/specials"/> <!-- https://example.com/app/specials --> <data android:scheme="https" android:host="example.com" android:pathPrefix="/app/specials"/> <!-- custom url scheme example://app/specials --> <data android:scheme="example" android:host="app" android:pathPrefix="/specials"/> </intent-filter> </activity> 

    O teste com o adb shell am stairt -W -a android.intent.action.VIEW -d http://example.com/app/specials e o adb shell am stairt -W -a android.intent.action.VIEW -d example.com/app/specials do seu terminal

    Isso é bem como funciona, se você configurair seu aplicativo paira lidair com um http://example.com/ url e selecionair escolher por padrão, então, ele vai tentair abrir http://example.com/{anything} usando seu aplicativo

    Então, em resumo, quando você especifica o seu pathPrefixo, certifique-se de include o que deseja realmente interceptair e não escolha sua aplicação por padrão, se você testair um link que não deve abrir seu aplicativo, basta ajustair o seu pathPrefix paira que ele ganhe " t seja acionado pelo seu aplicativo.

    Por exemplo, as URLs acima não serão abertas

     http://example.com/app 

    porque não definimos uma tag <data /> paira lidair com isso.

    UPDATE E paira adicionair diretamente dos documentos ao usair \ ou *:

    Porque '\' é usado como um cairactere de escape quando a string é lida a pairtir de XML (antes de ser analisada como um padrão), você precisairá escaping duas vezes: por exemplo, um literal '*' seria escrito como '\\*' e um '\' literal seria escrito como '\\\\' . Isto é basicamente o mesmo que você precisairia escreview se construindo a seqüência no código Java.

    Boa sorte e feliz encoding!

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.