2014-09-03 12 views
5

Quando un utente apre un sito web che voglio uno dei seguenti due casi da accadere:Reindirizzare all'app per Android da un sito Web?

  1. Se il mycoolapp applicazione è installata reindirizzare l'utente l'applicazione utilizzando lo schema URL personalizzato mycoolapp: //
  2. Se l'app non è installata, resta nella pagina corrente senza postare o reindirizzare a una pagina sconosciuta o un popup di errore.

Caso 1 è facile si può utilizzare il seguente codice:

window.location = "mycoolapp://"; 

Ciò funzionerà se l'applicazione è installata sul dispositivo. Quando l'app non è installata, reindirizza l'utente a una pagina vuota sconosciuta.

Per il caso 2, ho una soluzione che utilizza un iFrame che funziona perfettamente su iOS e sul browser Android nativo. Non funziona su Chrome per Android.

var redirect = function (location) { 
    var iframe = document.createElement('iframe'); 
    iframe.setAttribute('src', location); 
    iframe.setAttribute('width', '1px'); 
    iframe.setAttribute('height', '1px'); 
    iframe.setAttribute('position', 'absolute'); 
    iframe.setAttribute('top', '0'); 
    iframe.setAttribute('left', '0'); 
    document.documentElement.appendChild(iframe); 
    iframe.parentNode.removeChild(iframe); 
    iframe = null; 
};  

redirect('mycoolapp://'); 

Quando l'applicazione viene installata si sta lavorando sul browser Android nativo, ma su Chrome per Android non v'è reindirizzamento. Nulla accade sulla pagina.

Come posso effettuare il reindirizzamento alla mia app che funziona su Chrome per Android senza reindirizzare a una pagina vuota quando l'app non è installata?

Edit: So che è possibile utilizzare un Intent

window.location = "intent://#Intent;package=com.mycoolapp;scheme=mycoolapp;launchFlags=268435456;end;"; 

Questo non è quello che voglio perché lancia la pagina di app su Google Play, se l'applicazione non è installata. C'è un modo per non reindirizzare a Google Play?

+0

su Android non utilizzare schema di "speciale" ... utilizzare schema http filtro intenti ... il browser chiederà utente per completare l'azione con il browser o con la tua app (se installata) – Selvin

+0

@Selvin Potresti pubblicare una risposta per la tua idea? – confile

+0

è la stessa della risposta di RGraham – Selvin

risposta

4

Non è necessario per avviare l'app su un protocollo personalizzato. Funzionerà per qualsiasi indirizzo, ad es. nel vostro AndroidManifest.xml:

<intent-filter> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <category android:name="android.intent.category.BROWSABLE" /> 
    <data android:host="www.mycoolapp.com" /> 
    <data android:scheme="http" /> 
    <data android:pathPattern="/Android" /> 
</intent-filter> 

Questo significa che è possibile indirizzare l'utente che utilizza:

window.location = "/Android"; 

Se è installato l'applicazione, Android richiede di eseguire il "Apri con". In caso contrario, l'utente verrà indirizzato alla pagina/Android nel proprio browser.

+0

Io uso l'url personalizzato perché io uso lo stesso schema di url per iOs questo rende le cose molto più semplici. – confile

+0

@confile Esegui un rapido sniffing del browser. Usa quello che hai per iOS e quanto sopra per Android. – CodingIntrigue

+0

se l'app non è installata window.location = "/ Android"; aprirà una pagina vuota nel browser. Questo non è quello che voglio. Se l'app non è installata, l'utente dovrebbe rimanere nella pagina corrente. – confile

0
Add this in manifest file,note the scheme. 

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

in html fornire il codice, lo schema è uguale a quello nel file manifest.

<a href="intent:#Intent;scheme=startci;package=gramener.star;end">click here</a> 

se si desidera aggiungere il parametro per la vostra applicazione utilizzare questo

<a href="intent:#Intent;scheme=startci://open?url_param=hi santhosh;package=gramener.star;end">click here</a> 

se l'applicazione non è installata, quindi se si desidera reindirizzare a qualche altra pagina di aggiungere l'url di ripiego come questo.L'URL deve essere codificato

<a href="intent:#Intent;scheme=startci://open?url_param=hi santhosh;package=gramener.star;S.browser_fallback_url=http%3A%2F%2Fzxing.org;end">click here</a> 

per ottenere il parametro di aggiungere sottostante Codice

Uri data = this.getIntent().getData(); 
    if (data != null && data.isHierarchical()) { 
     if (data.getQueryParameter("url_param") != null) { 
      String param = data.getQueryParameter("url_param");    
      Log.d("the param is",param); 
       //do something here 
     } 
    } 
+0

questo pulsante funziona avvia l'app dal primo ... –

Problemi correlati