2017-10-30 2 views
1

Ich versuche, App Links arbeiten auf meiner Android-App, aber bin nicht in der Lage, herauszufinden, warum es nicht funktioniert.Android App Links funktioniert nicht

ich folgende Intent-Filter-Tag mein Manifest-Datei hinzugefügt haben:

<activity android:name=".MyActivity"> 
    <intent-filter android:autoVerify="true"> 
    <action android:name="android.intent.action.VIEW" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <category android:name="android.intent.category.BROWSABLE" /> 
    <data 
     android:scheme="https" 
     android:host="www.mywebsite.com" 
     android:pathPattern="(/[a-z]{2}|)/foo/bar" /> 
    </intent-filter> 
<activity android:name=".MyActivity"> 

In MyActivity.java ich habe:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ... 
    handleIntent(getIntent()); 
} 

protected void onNewIntent(Intent intent) { 
    super.onNewIntent(intent); 
    handleIntent(intent); 
} 

private void handleIntent(Intent intent){ 
    String appLinkAction = intent.getAction(); 
    Uri appLinkData = intent.getData(); 
    if (Intent.ACTION_VIEW.equals(appLinkAction) && appLinkData != null){ 
     //Do something here 
    } 
} 

Ich habe auch die automatisch generierten Digital-Asset-Links hinzugefügt Datei meine Webseite. Es zeigt sich ganz gut an https://www.mywebsite.com/.well-known/assetlinks.json

Die folgende Bestätigungs-Link checkt auch: https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://www.mywebsite.com&relation=delegate_permission/common.handle_all_urls

ich ein signiertes apk auf einem Gerät läuft Android 7.0 installiert haben. Nach der Installation kann ich in den Protokollen meines Webservers sehen, dass das Gerät die Datei assetslinks.json erfolgreich erhält.

Als Ergebnis adb shell dumpsys package d Lauf zeigt folgendes:

App linkages for user 0: 

Package: com.myapp.myapp 
Domains: www.mywebsite.com 
Status: always : 20000001f 

ich eine E-Mail an mich mit dem Link gesendet https://www.mywebsite.com/foo/bar und es öffnet nur den Dialog App Chooser, ohne auch nur meine Anwendung hindeutet. Es zeigt nur Browseroptionen an.

Durch Klicken auf einen Link, z. B. maps.google.com, wird die Google Maps App direkt geöffnet. Was zu der Annahme führt, dass das Problem nichts mit den Einstellungen des Telefons zu tun hat.

Was fehlt mir?

+0

Suchen Sie nach 'SingleHostAsyncVerifier' im Logcat während der App-Installation. Was sind die Protokolle? –

+1

Wenn alles gut aussieht, versuchen Sie, das 'pathPattern'-Attribut zu entfernen/zu vereinfachen, da es solche regexp-Zeichen möglicherweise nicht erkennt: https://developer.android.com/guide/topics/manifest/data-element.html –

+0

@SimonMarquis' SingleHostAsyncVerifier 'gibt' -> true' für meine Website zurück. – mickael

Antwort

0

Nach dem "App Link Assistant" -Tool in Android Studio auf der Registerkarte "Tools" müssen Sie nach dem Hosten der Datei assetlinks.json Asset-Anweisungsliste in der Datei strings.xml hinzufügen und diese dann mit der Manifestdatei verknüpfen.

Überprüfen Sie die folgenden Schritte -

  1. Asset-Statement hinzufügen

    <string name="asset_statements">[{\n \"relation\": [\"delegate_permission/common.handle_all_urls\"],\n \"target\": {\n \"namespace\": \"web\",\n \"site\": \"https://bigakash.000webhostapp.com\",\n }\n}]</string> 
    
  2. Link-Strings AndroidManifest.xml

    <meta-data 
        android:name="asset_statements" 
        android:resource="@string/asset_statements" /> 
    
  3. hinzufügen autoVerify auf Vorsatz Filterelement strings.xml .

Ich hatte auch zu viel Zeit in das Verständnis dieses Prozesses verschwendet.

Verwandte Themen