Когда я нажимаю ссылку: https://example.com/abcd на версии Android 6/7/8, отображается диалоговое окно разрешения неоднозначности. Мы уже проверили домен, разместив json по адресу: https://example.com/.well-known/assetlinks.json. Я сделал все в соответствии с документацией, но ссылка не открывается без неоднозначности. Пожалуйста, помогите мне найти то, что мне не хватает.
Код в манифесте:
<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 = "example.com"
android:pathPattern = "/abcd"
/>
</intent-filter>
@MartinZeitler, я не думаю, что это дубликат этого, поскольку ссылки из branch.io отличаются от ссылок приложений тем, кому принадлежит процесс проверки и как они разрешаются.
@RandomAspirer нет ничего другого, независимо от имени хоста, потому что это происходит на устройстве.
вам нужно создать файл json с сертификатом SHA256 для ключа выпуска и загрузить json на свой сайт. Проверить android.jlelse.eu/…
@Tejas B Вы поняли, в чем проблема?
Пожалуйста, попробуйте добавить autoVerify = "true":
<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 = "example.com"
android:pathPattern = "/abcd"
/>
autoVerify = "true" добавлен. но проблема все еще сохраняется.
Пожалуйста, проверьте logcat. Должно быть что-то вроде: IntentFilterIntentOp: Проверка [some_number] завершена. Успех: [истина / ложь]
вы можете попробовать это как http, так и https:
<activity
android:name = ".ui.MainActivity"
android:launchMode = "singleTask"
android:screenOrientation = "portrait">
<intent-filter>
<action android:name = "android.intent.action.VIEW" />
<category android:name = "android.intent.category.BROWSABLE" />
<category android:name = "android.intent.category.DEFAULT" />
<data
android:host = "www.oschina.net"
android:scheme = "http" />
</intent-filter>
<intent-filter>
<action android:name = "android.intent.action.VIEW" />
<category android:name = "android.intent.category.BROWSABLE" />
<category android:name = "android.intent.category.DEFAULT" />
<data
android:host = "www.oschina.net"
android:scheme = "https" />
</intent-filter>
<intent-filter>
<action android:name = "android.intent.action.VIEW" />
<category android:name = "android.intent.category.BROWSABLE" />
<category android:name = "android.intent.category.DEFAULT" />
<data
android:host = "my.oschina.net"
android:scheme = "http" />
</intent-filter>
<intent-filter>
<action android:name = "android.intent.action.VIEW" />
<category android:name = "android.intent.category.BROWSABLE" />
<category android:name = "android.intent.category.DEFAULT" />
<data
android:host = "my.oschina.net"
android:scheme = "https" />
</intent-filter>
</activity>
обновление от 2021 года с Android 12:
Android изменил политику разрешения веб-намерений, которая влияет на обработку ссылок, если вы будете следовать всем новым требованиям, ваше приложение получит шанс, если браузер не справится с ними, подробнее об этом здесь: требования к разрешению веб-намерений
///////////////////// Нижеуказанное поведение все еще может применяться сегодня //////////////////////
Предостережение здесь заключается в том, что если вы устанавливаете приложение через игровой магазин, для "link-handling policy"
приложения по умолчанию с зарегистрированными доменами, такими как www.example.com, установлено значение «Обработка в приложении», что откроет приложение, непосредственно подвергающееся проверке фильтра намерений, без каких-либо диалогов для устранения неоднозначности.
Если вы устанавливаете приложение с помощью средств, отличных от playstore, например, через adb, даже если вы подписываете его с помощью хранилища ключей, для link handling policy
по умолчанию установлено значение «Всегда спрашивать», в котором будет отображаться диалоговое окно устранения неоднозначности, даже если проверка фильтра намерений проходит для ссылки на ваше приложение.
Есть ли для этого подтверждающая документация?
нет конкретной документации о том, какой установочный носитель устанавливает какую политику, но есть документация для тестирования «политики обработки ссылок», которую я сделал и пришел к вышеупомянутому выводу, который я упомянул в своем ответе.
Это звучит разумно, однако у меня это работает при установке отладочной сборки через Gradle. Похоже, требуется некоторое время, чтобы связать приложение и домен, поэтому я считал, что раньше этот ответ мог быть правильным.
@creativecreatorormaybenot, это тоже возможно.
Могу подтвердить, что это именно то, что я испытал. Установил через slack, перешел в "Всегда спрашивать". Установил из магазина, жень на "Обработать в приложении".
Поздно на вечеринку, но я тоже испытал, что значения неоднозначности постоянно всплывают. Для тех, кому еще не удалось решить эту проблему (или в будущем), перейдите в Logcat и найдите «IntentFilterIntentOp». Вы должны увидеть что-то вроде Verification 8 complete. Success:true. Failed hosts:.
. Это может привести к сбою (Verifying IntentFilter. verificationId:8 scheme:"https" hosts:"example.co.za" package:"za.co.example.qa".)
, если вы загрузили свой файл assetlinks.json в один домен, пока он недоступен на другом или поддоменах, которые вы зарегистрировали в своем фильтре намерений.
Также стоит упомянуть, что ваше приложение должно быть запущено хотя бы один раз, чтобы IntentFilterIntentOp выполнил необходимую проверку. После этого при доступе к ссылке через тестирование ссылок на приложения в Android Studio ваше приложение должно автоматически открываться без диалогового окна устранения неоднозначности.
Получил ту же проблему. Взгляните на свой отпечаток пальца sha256. Если вы тестируете приложения с отладочной версией приложения, вам необходимо разместить отпечаток пальца для отладочной версии. Вы можете сделать это в Android Studio - Инструменты - Помощник по ссылкам на приложения - Связанный веб-сайт.
Когда вы запускаете приложение в Android Studio, на вашем устройстве устанавливается отладочный APK, который может соответствовать живой конфигурации (которая предназначена для выпуска APK или пакета) на панели управления вашего филиала.
Чтобы обработать режим отладки (или тест) в ветке, вот что я сделал
Настройте тестовую конфигурацию на панели управления вашего филиала:
Создайте два файла манифеста Android для каждого типа APK или пакета:
app/src/debug/AndroidManifest.xml
<- для отладки APK или пакетаapp/src/main/AndroidManifest.xml
<- для выпуска APK или пакетаВыполните настройку Branch SDK для обоих двух файлов манифеста
Теперь вы должны иметь возможность использовать ссылку отладки без отображения запроса разрешения неоднозначности
Возможный дубликат Как отключить диалог устранения неоднозначности при открытии deeplink Branch.io