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