2015-11-17 2 views
2

Я пытаюсь добавить глубокую ссылку на свое приложение. Я добавил два фильтра намерений в один из моих действий, один фильтр для схемы «http» и другой для моей пользовательской схемы (я использую «пример»). Я добавил один фильтр намерения по схеме, основанный на информации в этом SO (Deep-linking intent does not work), так что я могу обрабатывать типы ссылок example://test и http://www.example.com/test.Работа с глубоким связыванием Android работает в ADB, но не в браузере

Вот мой XML:

 <activity 
    android:name="com.myapp.myapp.SplashActivity" 
    android:screenOrientation="portrait" 
    android:theme="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen" > 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 

     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
    <intent-filter android:label="Intent Filter label"> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     <category android:name="android.intent.category.BROWSABLE" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
     <!-- Accepts URIs that begin with "http://www.example.com/test2” --> 
     <data android:scheme="http" 
       android:host="www.example.com" 
       android:pathPrefix="/test2" /> 

    </intent-filter> 
    <intent-filter android:label="Intent Filter label"> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     <category android:name="android.intent.category.BROWSABLE" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 

     <!-- Accepts URIs that begin with "example://test2” --> 
     <data android:scheme="example" 
       android:host="test2" /> 
    </intent-filter> 
</activity> 

Они загружаются правильно, когда я проверяю в АБР:

adb shell am start -W -a android.intent.action.MAIN -d "example://test2" com.myapp.myapp 

возвращает

Starting: Intent { act=android.intent.action.MAIN dat=example://test2 pkg=com.myapp.myapp } 
Status: ok 
Activity: com.myapp.myapp/com.app.myapp.SplashActivity 
ThisTime: 357 
TotalTime: 357 
Complete 

Однако, я абсолютно ничего в браузере. Когда я пробую это в браузере: «example://test2» в FF я получаю «couldn't find an app to open this link», а в Chrome и родном браузере он открывает новый поиск Google для «example://test2».

Когда я пробую другой стиль: «http://www.example.com/test2» он просто пытается перейти на эту веб-страницу во всех трех браузерах.

Я развертываю приложение на своем телефоне из Android Studio. Я также пытался создать отладочную APK, отправить ее на свой телефон и установить. Тот же результат для обоих. Что я делаю неправильно? Я следовал за гидом (https://developer.android.com/training/app-indexing/deep-linking.html) до буквы, насколько я могу судить. Должно ли мое приложение находиться в магазине для глубокой привязки к работе?

ответ

1

Ughh, мое действие было MAIN, когда оно должно было быть VIEW ...

<intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 

...

<intent-filter> 
     <action android:name="android.intent.action.VIEW" /> 
0

Ваша реализация кажется правильным, а также, если вы тестируя ваше приложение на своем устройстве, его не нужно размещать на PlayStore.

Вы пробовали тестирование через QR-код? Как показано в документах Google - https://developers.google.com/app-indexing/android/test

Надеюсь, это поможет.

Смежные вопросы