A lançar uma aplicação a partir de um URL

estou a tentar que o selector de aplicação Android seja lançado quando um URL específico é clicado dentro de um e-mail de Registo. Eu já olhei para a pergunta abaixo e vários outros, mas eu ainda não estou tendo sorte com isso.

a lançar a aplicação Android a partir do link ou e-mail

Criei a minha intenção no AndroidManifest.arquivo xml como abaixo (eu coloquei o endereço do meu site onde você vê". website.org"):

 <activity android:name=".MainActivity" android:configChanges="orientation|screenSize">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </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" />
                    <data android:scheme="https"
                        android:host="*.website.org"
                        android:path="/" />
                </intent-filter>
  </activity>

alguém é capaz de ajude - me com o que mais eu posso estar faltando, já que este não está lançando nada e está apenas carregando o link diretamente no navegador web padrão?

Author: Flimzy, 2017-12-19

3 answers

Consegues isso porligação profunda na tua aplicação.

Em primeiro lugar, tem de adicionar Filtros de intenção para ligações recebidas.

<action>

Indique a acção de intenção do ACTION_ View de modo a que o filtro de intenção possa ser atingido a partir do Google Search.

<data>

Adicionar uma ou mais marcas, cada uma das quais representa um formato URI isso resolve a atividade. No mínimo, a etiqueta deve incluir: o atributo android: scheme.

Você pode adicionar mais atributos para mais refine o tipo de URI que a atividade aceita. Por exemplo, você pode ter várias atividades que aceitam URIs semelhantes, mas que diferem simplesmente com base no nome do caminho. Neste caso, use o atributo android: path ou as suas variantes pathPattern ou pathPrefix para diferenciar a actividade que o sistema deve abrir para diferentes URI caminho.

<category>

Inclui a categoria navegável. É necessário para a intenção filtro para ser acessível a partir de um navegador web. Sem ele, clicando em link em um navegador não pode resolver para o seu aplicativo.

Incluir também o valor por omissão categoria. Isto permite que o seu aplicativo para responder a intentos implícitos. Sem isto, a atividade só pode ser iniciada se a intenção especifica o seu nome do componente da aplicação.

Usei este url para lançar a minha aplicação "http://www.example.com/gizmos"

Olha para o meu manifesto.ficheiro xml ,
<activity
    android:name="com.example.android.GizmosActivity"
    android:label="@string/title_gizmos" >
    <intent-filter android:label="@string/filter_view_http_gizmos">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <!-- Accepts URIs that begin with "http://www.example.com/gizmos” -->
        <data android:scheme="http"
              android:host="www.example.com"
              android:pathPrefix="/gizmos" />
        <!-- note that the leading "/" is required for pathPrefix-->
    </intent-filter>
    <intent-filter android:label="@string/filter_view_example_gizmos">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <!-- Accepts URIs that begin with "example://gizmos” -->
        <data android:scheme="example"
              android:host="gizmos" />
    </intent-filter>
</activity>

E repare que os dois filtros de intenção só diferem pela <data> elemento.

<intent-filter>
  ...
  <data android:scheme="https" android:host="www.example.com" />
  <data android:scheme="app" android:host="open.my.app" />
</intent-filter>
Pode parecer que isto só suportahttps://www.example.com e app: / / open. my. app . No entanto, ele suporta estes dois, mais estes: app://www.example. com e https://open.my.app.

Leia os dados das entradas

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Intent intent = getIntent();
    String action = intent.getAction();
    Uri data = intent.getData();
}

Testa as tuas ligações profundas

A sintaxe geral para testar um filtro de intenções URI com adb é:

$ adb shell am start
        -W -a android.intent.action.VIEW
        -d <URI> <PACKAGE>

Por exemplo, o comando abaixo tenta ver uma actividade da aplicação de destino que está associada com o URI especificado.

$ adb shell am start
        -W -a android.intent.action.VIEW
        -d "example://gizmos" com.example.android
 5
Author: Fenil Patel, 2017-12-19 13:09:12

Em primeiro lugar, tente escrever todo o caminho para o Url em

android:host"https://www.google.com"

E a seguir, verifique se não optou por um navegador por omissão para a ligação no dispositivo android.

Remova qualquer omissão para a ligação, se existir, e tente de novo.

 0
Author: Abubakker Moallim, 2017-12-19 13:00:53
Obrigado pelas respostas. No final eu tive que mudar minha intenção para o abaixo e teve o resultado desejado. Quando eu clicar no URL especificado na minha intenção, o selector de aplicação aparece permitindo-me carregar o link no meu aplicativo.

Assim como informação para qualquer um que luta como eu fiz, você não precisa ler dados de entradas para o selector de aplicação para lançar, tudo que você precisa é o abaixo em seu arquivo AndroidManifest.

<intent-filter android:autoVerify="true">
                    <action android:name="android.intent.action.VIEW" />
                    <category android:name="android.intent.category.DEFAULT" />
                    <category android:name="android.intent.category.BROWSABLE" />
                    <data   android:scheme="http" />
                    <data   android:scheme="https" />
                    <data android:host=".website.com" />
</intent-filter>
Obrigado A Todos.
 0
Author: Gwillz, 2017-12-20 12:41:42