[Android] App openen via hyperlinks

Pagina: 1
Acties:

Onderwerpen


  • NickThissen
  • Registratie: November 2007
  • Laatst online: 15-04 08:56
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:
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!

Mijn iRacing profiel


  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 07-03 23:58
Heb je het al eens geprobeerd met de android:pathPrefix ingesteld op "jforum/"?

Dit gaat sowieso niet werken:
XML:
1
<data android:scheme="http" android:host="members.iracing.com/jforum/" />


"/jforum/" is namelijk geen onderdeel van de host :)

[ Voor 47% gewijzigd door Alex) op 29-09-2012 00:27 ]

We are shaping the future


  • PieterAelse
  • Registratie: Februari 2007
  • Laatst online: 06-04 16:14
Je link redirect naar een https site. Heb je scheme="https" al geprobeerd?

  • NickThissen
  • Registratie: November 2007
  • Laatst online: 15-04 08:56
Alex) schreef op zaterdag 29 september 2012 @ 00:26:
Heb je het al eens geprobeerd met de android:pathPrefix ingesteld op "jforum/"?
Zojuist geprobeerd, werkt nog steeds niet.
PieterAelse schreef op zaterdag 29 september 2012 @ 16:21:
Je link redirect naar een https site. Heb je scheme="https" al geprobeerd?
Als je niet ingelogd bent word je inderdaad doorgestuurd. Maar ik ga er vanuit (ik weet niet of dit klopt) dat Android de url al zou moeten oppikken (en je de keuze tussen apps geeft) voordat deze redirect plaatsvind, niet?

Voor de zekerheid: geprobeerd, en werkt niet :-(

Mijn iRacing profiel