wake-up-neo.com

Android: Erstellen eines benutzerdefinierten URL-Schemas mit dem angegebenen Format myapp: // http: //

Ich habe die meisten Fragen und Antworten zu benutzerdefinierten URLs recherchiert und meine mögliche Antwort nicht gefunden. 

Ich möchte, dass meine App durch Klicken auf eine bestimmte URL im Browser (beliebige auf dem mobilen Gerät) gestartet wird. Die angegebene URL kann nicht geändert werden, da sie auch für die App IOS verwendet wird. Sie sieht folgendermaßen aus: 

"myapp: // http://www.name.com/path/path2/

Ich bin mir nicht sicher, wie ich mit "myapp: // http: //" umgehen und einen richtigen Intent-Filter erstellen sollte. Alles, was ich versucht habe, funktioniert nicht. Jede Hilfe wird geschätzt, und wenn ich eine relevante Antwort verpasst habe, bitte meine Entschuldigung ausgenommen. 

Das habe ich bisher ausprobiert:

      <activity
        Android:name="com.myapp.test.SplashScreen"
        Android:exported="true"
        Android:label="@string/app_name"
        Android:screenOrientation="portrait"
        Android:theme="@Android:style/Theme.Black.NoTitleBar.Fullscreen" >
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN" />

            <category Android:name="Android.intent.category.LAUNCHER" />
        </intent-filter>

        <!-- Test for URL scheme -->
        <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:Host="www.name.com"
                Android:path="/path/path2/"
                Android:scheme="http" />
            <data
                Android:Host="www.name.com"
                Android:path="/path/path2/"
                Android:scheme="https" />

            <data Android:scheme="myapp" />
        </intent-filter>
        <!-- End Test for URL scheme -->
    </activity>

Hinweis: Ich habe es mit/ohne das exportierte versucht: true

16
EviatarS

Wie CommonsWare sagte, der angegebene URI, nach dem ich ein Schema erstellen musste, ist kein gültiger URI. Daher funktionierte das Schema nicht und die Anwendung wurde nicht gestartet. Nach dieser Erklärung waren die Server-Jungs überzeugt, die URI in myapp zu ändern: // ... und es funktionierte wie Magie :). 

Die Aktivität sieht jetzt so aus: 

 <activity
    Android:name="com.myapp.test.SplashScreen"
    Android:exported="true"
    Android:label="@string/app_name"
    Android:screenOrientation="portrait"
    Android:theme="@Android:style/Theme.Black.NoTitleBar.Fullscreen" >
    <intent-filter>
        <action Android:name="Android.intent.action.MAIN" />

        <category Android:name="Android.intent.category.LAUNCHER" />
    </intent-filter>

    <!-- Test for URL scheme -->
    <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>
    <!-- End Test for URL scheme -->
</activity>
12
EviatarS

Das ist ein Missbrauch des URI-Schemas und ist ungültig. Die HTTP-URL, die Sie übergeben möchten, ist ein Datenelement und sollte daher in der Abfragezeichenfolge gesendet werden.

myapp://somehost/action?url=http%3A%2F%2Fwww.name.com%2Fpath%2Fpath2%2F
1
Monstieur