2014-09-03 15 views
5

Wenn ein Benutzer eine Webseite öffnet ich eine der beiden folgenden Fällen werden wollen passieren:Von einer Website auf Android-App umleiten?

  1. Wenn die App mycoolapp installiert wird, um den Benutzer auf die App umleiten mit der benutzerdefinierten URL-Schema mycoolapp: //
  2. Wenn die App nicht installiert ist, bleiben Sie auf der aktuellen Seite, ohne eine unbekannte Seite zu veröffentlichen oder umzuleiten, oder ein Fehler-Popup.

Fall 1 ist einfach Sie den folgenden Code verwenden:

window.location = "mycoolapp://"; 

Das funktioniert, wenn die Anwendung auf dem Gerät installiert ist. Wenn die App nicht installiert ist, wird der Benutzer auf eine leere Seite umgeleitet, die unbekannt ist.

Für Fall 2 habe ich eine Lösung mit einem iFrame, die auf iOS und dem nativen Android-Browser funktioniert. Es funktioniert nicht in Chrome für 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://'); 

Wenn die App installiert ist, auf dem nativen Android-Browser funktioniert, aber auf Chrome für Android wird nicht umgeleitet werden. Nichts passiert auf der Seite.

Wie kann ich die Weiterleitung zu meiner App in Chrome für Android durchführen, ohne auf eine leere Seite umgeleitet zu werden, wenn die App nicht installiert ist?

Edit: Ich weiß, dass Sie diese Absicht ein

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

verwenden können, ist nicht das, was ich will, weil es die App-Seite auf Google Play startet, wenn die App nicht installiert ist. Gibt es eine Möglichkeit, dass es nicht auf Google Play umleiten wird?

+0

auf Android nicht "special" Schema verwenden ... http-Schema in Intent Filter verwenden, ... wird der Browser fragen Benutzer, um die Aktion mit dem Browser oder mit Ihrer App zu beenden (falls installiert) – Selvin

+0

@Selvin Könnten Sie bitte eine Antwort für Ihre Idee posten? – confile

+0

es ist das gleiche wie RGrahams Antwort – Selvin

Antwort

4

Sie brauchen nicht brauchen, um Ihre App auf einem benutzerdefinierten Protokoll zu starten. Es funktioniert für jede Adresse, z.B. in Ihrem 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> 

Dies bedeutet, dass Sie den Benutzer mit dem richten können:

window.location = "/Android"; 

Wenn die App installiert ist, Android auf "Öffnen mit" aufgefordert wird. Wenn nicht, wird der Benutzer einfach auf die/Android-Seite in ihrem Browser gebracht.

+0

Ich benutze benutzerdefinierte URL, weil ich das gleiche URL-Schema für iOS verwenden, das macht die Dinge viel einfacher. – confile

+0

@confile Machen Sie einen schnellen Browser-Sniff. Verwenden Sie, was Sie für iOS und das oben für Android haben. – CodingIntrigue

+0

Wenn die App nicht installiert ist window.location = "/ Android"; öffnet eine leere Seite im Browser. Das ist nicht was ich will. Wenn die App nicht installiert ist, sollte der Benutzer auf der aktuellen Seite bleiben. – 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 geben Sie den Code, das Schema ist das gleiche wie in der Manifest-Datei.

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

wenn Sie diesen Parameter, um Ihre Anwendung hinzuzufügen verwenden

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

wenn die App nicht installiert ist also, wenn Sie auf eine andere Seite umleiten möchten die Ausweich-URL wie folgt hinzufügen.Die URL muss

<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> 

codiert werden die Parameter erhalten unter Code hinzufügen

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

dies funktioniert Schaltfläche startet App von Anfang an ... –

Verwandte Themen