Dag,
Ik ben een Android app aan het schrijven (in Java) en zou graag een feature toevoegen waarmee de app geopend wordt via een link die bijvoorbeeld via de browser of email aangeklikt wordt. Zodra de gebruiker een link aanklikt wil ik dat hij de keuze krijgt waarmee hij die link moet openen (ik krijg bijvoorbeeld de keuze tussen Chrome en de standaard browser), en als hij dan mijn app kiest wil ik dat mijn app opent en iets met de aangeklikte link doet.
Ik kan hier best veel informatie over vinden, het probleem is dat het me gewoon niet lukt. Bijvoorbeeld op deze link staat vrij duidelijk aangegeven hoe het zou moeten werken (op een paar details na die ik wellicht fout doe): je moet een intent-filter toevoegen aan de activity in de manifest file, waarmee je aangeeft welk type links met jou app geopend kunnen worden. In de activity kun je daarna de geklikte link opvragen en doen wat je wil. Klinkt allemaal heel simpel, maar ik krijg het niet voor elkaar.
De stap die ik in deze uitleg mis is eigenlijk: welke activity gebruik ik hier voor? Moet ik een aparte activity aanmaken (die eigenlijk geen 'view' of layout heeft) die alleen met deze links te maken heeft, en die na het verwerken van de link de juiste activity opent? Of moet ik deze intent-filter bij de main activity zetten?
Mijn gok was dat er een nieuwe activity hoort, dus de eerste twee activities in mijn manifest zien er als volgt uit:
De LoginActivity is de main activity die gestart wordt bij het openen van de app. De UrlActivity is de nieuwe activity (zonder view eigenlijk) met de intent-filter voor de links die ik wil verwerken. De links beginnen allemaal met:
Als ik het goed begrepen heb zou deze data intent-filter dus juist moeten zijn... Ik heb ook geprobeerd om 'pathPrefix' weg te laten en het 'jforum' stukje in de 'host' te zetten, zoals hieronder, maar dat werkt ook niet:
In de UrlActivity doe ik het volgende:
handleData kijkt welke url het precies is en zou dan aan de hand van die url de juiste activity moeten openen.
Wat er niet werkt is eigenlijk simpel: ik krijg in het keuze schermpje gewoon niet mijn app te zien als ik een dergelijke link aan klik (voorbeeld: http://members.iracing.com/jforum/forums/show/606.page). Ik krijg alleen, zoals voorheen, Chrome en de standaard browser als keuze. Ik kan dit dus ook niet debuggen, aangezien m'n app nooit start. Hoe kan ik nu erachter komen wat ik fout doe?
Weet iemand waar het mis gaat? Bedankt!
Ik ben een Android app aan het schrijven (in Java) en zou graag een feature toevoegen waarmee de app geopend wordt via een link die bijvoorbeeld via de browser of email aangeklikt wordt. Zodra de gebruiker een link aanklikt wil ik dat hij de keuze krijgt waarmee hij die link moet openen (ik krijg bijvoorbeeld de keuze tussen Chrome en de standaard browser), en als hij dan mijn app kiest wil ik dat mijn app opent en iets met de aangeklikte link doet.
Ik kan hier best veel informatie over vinden, het probleem is dat het me gewoon niet lukt. Bijvoorbeeld op deze link staat vrij duidelijk aangegeven hoe het zou moeten werken (op een paar details na die ik wellicht fout doe): je moet een intent-filter toevoegen aan de activity in de manifest file, waarmee je aangeeft welk type links met jou app geopend kunnen worden. In de activity kun je daarna de geklikte link opvragen en doen wat je wil. Klinkt allemaal heel simpel, maar ik krijg het niet voor elkaar.
De stap die ik in deze uitleg mis is eigenlijk: welke activity gebruik ik hier voor? Moet ik een aparte activity aanmaken (die eigenlijk geen 'view' of layout heeft) die alleen met deze links te maken heeft, en die na het verwerken van de link de juiste activity opent? Of moet ik deze intent-filter bij de main activity zetten?
Mijn gok was dat er een nieuwe activity hoort, dus de eerste twee activities in mijn manifest zien er als volgt uit:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| <activity android:label="@string/app_name" android:name=".Activities.LoginActivity" android:theme="@android:style/Theme.Black.NoTitleBar"> <intent-filter > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".Activities.UrlActivity"> <intent-filter > <data android:scheme="http" android:host="members.iracing.com" android:pathPrefix="/jforum/" /> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.BROWSABLE" /> </intent-filter> </activity> |
De LoginActivity is de main activity die gestart wordt bij het openen van de app. De UrlActivity is de nieuwe activity (zonder view eigenlijk) met de intent-filter voor de links die ik wil verwerken. De links beginnen allemaal met:
code:
1
| http://members.iracing.com/jforum/... |
Als ik het goed begrepen heb zou deze data intent-filter dus juist moeten zijn... Ik heb ook geprobeerd om 'pathPrefix' weg te laten en het 'jforum' stukje in de 'host' te zetten, zoals hieronder, maar dat werkt ook niet:
XML:
1
| <data android:scheme="http" android:host="members.iracing.com/jforum/" /> |
In de UrlActivity doe ik het volgende:
Java:
1
2
3
4
5
6
7
8
9
| public class UrlActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { Uri data = this.getIntent().getData(); this.handleData(data); } } |
handleData kijkt welke url het precies is en zou dan aan de hand van die url de juiste activity moeten openen.
Wat er niet werkt is eigenlijk simpel: ik krijg in het keuze schermpje gewoon niet mijn app te zien als ik een dergelijke link aan klik (voorbeeld: http://members.iracing.com/jforum/forums/show/606.page). Ik krijg alleen, zoals voorheen, Chrome en de standaard browser als keuze. Ik kan dit dus ook niet debuggen, aangezien m'n app nooit start. Hoe kan ik nu erachter komen wat ik fout doe?
Weet iemand waar het mis gaat? Bedankt!