Wie registriere ich einen URL-Namespace (myapp: //app.start/) für den Zugriff auf dein Programm durch den Aufruf einer URL im Browser in Android OS?

Also möchte ich eine Android-App erstellen, also würde es irgendwo im Android-Betriebssystem registriert werden (oder einfach nur bei Systemstart starten) und wenn der Handy-Nutzer auf spezielle Schaltfläche auf einer Webseite in einem Web-Browser a la:

<a href="myapp://mysettings">Foo</a> 

Meine app würde auftauchen und laufen mit den params, die in dieser URL gesendet werden.

  • So geben Sie einen Standardbenutzer-Agenten für okhttp 2.x-Anfragen an
  • Auto Version nummeriert Ihre Android App mit Git und Eclipse
  • Android Studio Gradle Icon Fehler, Manifest Merger
  • Wie benutzt man Resources.getFraction ()?
  • Wie kann man das Shake Event mit Android erkennen?
  • AppWidget: Instanz wird nicht angezeigt, nachdem die Config-Aktivität auf einigen Geräten abgeschlossen ist
  • Also, wie mache ich so etwas?

    Ich brauche ein Tutorial mit Code!

  • InputFilter auf EditText verursachen Text wiederholen
  • Wie kann ich das mobileweb facebook connect API mit phonegap benutzen?
  • Erstellen Sie eine horizontale gepunktete Linie im Android-Layout
  • Android MediaRecorder setOutPutFile () zum Streamen mit Socket
  • Saubere Geschichte (neuer Ordner) in Android 5+ Verzeichnis Baum Picker (ACTION_OPEN_DOCUMENT_TREE)
  • Wie bekomme ich die aktuelle Kinderposition von ViewFlipper
  • 4 Solutions collect form web for “Wie registriere ich einen URL-Namespace (myapp: //app.start/) für den Zugriff auf dein Programm durch den Aufruf einer URL im Browser in Android OS?”

    Sie müssen die Standardregeln für URIs über die W3C und solche, was im Grunde bedeutet: dies nicht tun.

    Android definiert eine Uri-Syntax für die Beschreibung einer generischen Absicht. Es gibt Methoden auf Intent für die Umwandlung in und aus dieser Darstellung, wie zum Beispiel: http://developer.android.com/reference/android/content/Intent.html#toUri(int)

    So ist der Weg, dies zu tun, die normalen Einrichtungen zu verwenden, um in deinem Manifest für die Art von Intentionen zu beschreiben, die du mit einer bestimmten Komponente behandeln wirst, insbesondere die Definition eines Aktionsnamens in deinem eigenen Namensraum (com.mycompany.myapp.action .DO_SOMETHING oder was auch immer). Sie können dann eine Absicht machen, die Ihrer Komponente entspricht, und verwenden Sie Intent.toUri (), um die URI-Darstellung zu erhalten. Dies kann in deinem Link platziert werden und wird dann, wenn gedrückt, nach etwas suchen, das behandelt und damit deine app findet. Hinweis, um aus dem Browser wie folgt gestartet zu werden, muss die Komponente die BROWSABLE Kategorie behandeln. (Du brauchst das nicht in der Absicht zu haben, die du in den Link gesteckt hast, der Browser wird das automatisch für dich hinzufügen.)

    Schließlich können Sie das Paket der Absicht auf Ihre App mit diesem setzen: http://developer.android.com/reference/android/content/Intent.html#setPackage(java.lang.String)

    Dies ist eine neuere Funktion in der Plattform, die Ihnen erlaubt, Link Intents nur auf Ihre App zu verweisen, so dass andere Anwendungen nicht abfangen und behandeln können.

    Zusammenfassend: Lesen Sie die regelmäßige Dokumentation zu Intentionen und Intent-Filtern (wie das NotePad-Tutorial, obwohl Sie keine Inhalte verwenden werden: URIs hier, wahrscheinlich nur benutzerdefinierte Aktionen) und bekommen Sie Ihre App so arbeiten. Dann können Sie einen Browser-Link erstellen, um Ihre App auf die gleiche Weise zu starten, vorausgesetzt Ihr Absicht-Filter behandelt die BROWSABLE-Kategorie.

    Zuerst, um in der Lage zu sein, deine App aus dem Link mit dem benutzerdefinierten Schema 'myapp' in Browser / Mail zu starten, kannst du den Intentfilter wie folgt einstellen.

     <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="myapp"/> </intent-filter> 

    Und zu analysieren Abfragen in Ihrem Link myapp: // someaction /? Var = str & varr = string
    (Der Code ist über vereinfacht und hat keine Fehlerprüfung.)

     Intent intent = getIntent(); // check if this intent is started via custom scheme link if (Intent.ACTION_VIEW.equals(intent.getAction())) { Uri uri = intent.getData(); // may be some test here with your custom uri String var = uri.getQueryParameter("var"); // "str" is set String varr = uri.getQueryParameter("varr"); // "string" is set } 

    [Bearbeiten] Wenn Sie benutzerdefinierte Schema verwenden, um Ihre App zu starten, ist eines der Problem: Das WebView in anderen Apps kann Ihr benutzerdefiniertes Schema nicht verstehen. Dies könnte dazu führen, dass 404 Seite für diesen Browser für den Link mit benutzerdefinierten Schema zu zeigen.

    Hier ist mein Schnitt zum Jagdbeitrag.

    Erstellen Sie einen Intent-Filter in der Aktivität, die Sie in das Manifest wie folgt laden möchten:

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

    Ihre Webseite URL für diese wird wie folgt aussehen:

     intent:#Intent;action=com.bubblebeats.MY_CUSTOM_ACTION;end 

    Der einfachste HTML-Code, um deinen Apk aus einem Browser zu starten, würde so aussehen:

     <body> <a href="intent:#Intent;action=com.bubblebeats.MY_CUSTOM_ACTION;end">click to load apk</a> </body> 

    Um deiner Absicht Variablen hinzuzufügen

    Sie können die URI aus Ihrem Android-Code wie folgt generieren:

     Intent i = new Intent(); i.setAction("com.bubblebeats.MY_CUSTOM_ACTION"); i.putExtra("some_variable", "123456"); Log.d("ezpz", i.toUri(Intent.URI_INTENT_SCHEME)); 

    Dies wird dazu führen:

     04-13 09:47:30.742: DEBUG/ezpz(9098): intent:#Intent;action=com.bubblebeats.MY_CUSTOM_ACTION;S.some_variable=123456;end 

    Du willst nur diesen Teil:

     intent:#Intent;action=com.bubblebeats.MY_CUSTOM_ACTION;S.some_variable=123456;end 

    Schauen Sie sich das an, was hier passiert ist, und Sie können sehen, wie Sie den Codeschritt überspringen und diese URIs selbst manuell erstellen können.

    Besonders dieser Teil:

     S.some_variable=123456 

    Weil hackbod uns nie Code-Beispiele gegeben hat, möchte ich nur meine zu teilen, nachdem ich diese an die Arbeit gebracht habe.

    Zuerst müssen Sie eine benutzerdefinierte Aktion in Ihrer Manifestdatei definieren:

     <activity android:name=".activity.MainActivity" android:label="@string/app_name_full"> <intent-filter> <action android:name="com.yourpackage.action.OPEN_VIEW"></action> <category android:name="android.intent.category.DEFAULT"></category> <category android:name="android.intent.category.BROWSABLE"></category> </intent-filter> </activity> 

    Dann, für den Inhalt auf Ihrer Website, müssen Sie die URI aus einer Absicht zu generieren. Setzen Sie folgenden Code in Ihre Aktivität (Dieser Code könnte entfernt werden, sobald der Link generiert wird):

     Intent i = new Intent(); i.setAction("com.yourpackage.action.OPEN_VIEW"); i.setPackage("com.yourpackage"); i.putExtra("myextra","anystring"); Log.d(getClass().getSimpleName(), i.toUri(Intent.URI_INTENT_SCHEME)); 

    Um die Extras zu erhalten, setzen Sie in Ihre Aktivität, die in der Lage ist, die benutzerdefinierte Aktion (wie in Manifest definiert) zu erhalten:

     final Intent intent = getIntent(); final String action = intent.getAction(); if ("com.yourpackage.action.OPEN_VIEW".equals(action)) { Log.i(getClass().getSimpleName(), "EXTRA: "+intent.getExtras().getString("myextra")); } 

    Auf deiner Webseite (dies ist der zuvor generierte Link):

     <a href="intent:#Intent;action=com.yourpackage.action.OPEN_VIEW;package=com.yourpackage;S.myextra=anystring;end">Open App with extra</a> 

    Hoffe, dass jemand hilft für besseres Verständnis. Bitte korrigiere mich, wenn ich etwas falsch gemacht hätte

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.