2016-03-24 10 views
3

Ich benutze branch.io SDK in meiner Android App und möchte meine App zu einem Standard-Handler für Zweig-Links machen auf Android 6 beschrieben here (Android Führer) und here (Branch.io Führer)Intent Filter mit Android: autoVerify = "true" - nie bei der Installation überprüft, Standard-App-Links funktionieren nicht

Dies ist Erklärung meiner Tätigkeit in AndroidManifest.xml: Allerdings

<activity android:name="com.mypackage.MyActivity" 
       android:launchMode="singleTask"> 
     <intent-filter tools:node="merge" android:autoVerify="true"> 
      <data android:scheme="@string/url_scheme" android:host="open"/> 
      <data android:scheme="https" 
        android:host="@string/branch_io_host" 
        android:pathPrefix="@string/branch_io_path_prefix"/> 
      <data android:scheme="http" 
        android:host="@string/branch_io_host" 
        android:pathPrefix="@string/branch_io_path_prefix"/> 
      <action android:name="android.intent.action.VIEW"/> 
      <category android:name="android.intent.category.DEFAULT"/> 
      <category android:name="android.intent.category.BROWSABLE"/> 
     </intent-filter> 
    </activity> 

, wenn ich einen Build auf meinem Gerät installieren, ich sehe immer noch den Auswahldialog, wenn ich auf einen Link mit dem richtigen Host und Pfad klicke. Nach dem Durchlesen dieser extensive guide on app linking, glaube ich, geschieht dies, weil mein Gerät nie den Absichtsfilter meiner App überprüft. Z.B. wenn ich eine Twitter App aus dem Play Store installieren, sehe ich diese Nachrichten in LogCat:

03-24 15:04:27.231: D/IntentFilterVerificationReceiver(16965): Received ACTION_INTENT_FILTER_NEEDS_VERIFICATION. 
03-24 15:04:27.248: I/IntentFilterIntentService(16965): Verifying IntentFilter. verificationId:2 scheme:"https" hosts:"twitter.com www.twitter.com ads.twitter.com" package:"com.twitter.android". 
03-24 15:04:30.134: I/IntentFilterIntentService(16965): Verification 2 complete. Success:true. Failed hosts:. 

Aber ich weiß nicht Meldungen wie diese sehen, wenn ich meine App installieren. Ich habe versucht, Builds zu releasen und zu debuggen, habe versucht, es zum Alpha-Test im Play Store hochzuladen und von dort aus das gleiche Ergebnis zu installieren. Warum überprüft Android meinen Intent-Filter nicht?

+0

Haben Sie gehostet Json FLL in Ihrem Server @ richtigen Pfad? In branch.io haben Sie das Kontrollkästchen "applinks" aktiviert? –

+0

@ HarshaVardhan "Ja" zu beiden Fragen. –

+0

Sie sollten uns mehr Details geben. Was sind die String-Ressourcen, welche Werte verwenden Sie in der JSON-Datei, wo ist es gespeichert, etc. –

Antwort

6

dieses Fest durch diesen Daten-Tag in einen separaten Intent-Filter zu bewegen:

<data android:scheme="@string/url_scheme" android:host="open"/> 

Dies ist, was AndroidManifest jetzt aussieht:

<activity android:name="com.mypackage.MyActivity" 
      android:launchMode="singleTask"> 
    <intent-filter tools:node="merge" android:autoVerify="true"> 
     <data android:scheme="https" 
       android:host="@string/branch_io_host" 
       android:pathPrefix="@string/branch_io_path_prefix"/> 
     <data android:scheme="http" 
       android:host="@string/branch_io_host" 
       android:pathPrefix="@string/branch_io_path_prefix"/> 
     <action android:name="android.intent.action.VIEW"/> 
     <category android:name="android.intent.category.DEFAULT"/> 
     <category android:name="android.intent.category.BROWSABLE"/> 
    </intent-filter> 
    <intent-filter> 
     <data android:scheme="@string/url_scheme" android:host="open"/> 
     <action android:name="android.intent.action.VIEW"/> 
     <category android:name="android.intent.category.DEFAULT"/> 
     <category android:name="android.intent.category.BROWSABLE"/> 
    </intent-filter> 
</activity> 

Nachrichten von IntentFilter jetzt im Protokoll zeigen, wie beabsichtigt .