Я использую WebView для загрузки моего адаптивного веб-сайта на Android .
Я уже включил Глубокая связь с помощью Android 101 Studio 1016 * App Link Assistant . Проблема в том, что все URL-адреса (домашняя страница, сообщения, страницы) запускают приложение только в ГЛАВНОЙ СТРАНИЦЕ вместо соответствующих ссылок .
Структура URL моего поста https://www.example.com/2019/05/samplepost.html
Структура URL моей страницы https://www.example.com/page
Я пробовал многие подходы, которые я нашел здесь, включая тот, который был поднят Shanil Soni Включить глубокую связь для Android для различных структурированных URL . Но он не работал, пока я не прибегнул к App Link Assistant .
Ниже приведены мои коды
Вот сгенерированный фильтр намерений для моего manifest.xml
<intent-filter>
<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.example.com"
android:pathPattern="/*" />
</intent-filter>
И инструмент добавил 3 строки в мой файл MainActivity.java. Сразу после " // ВНИМАНИЕ: это было автоматически сгенерировано для обработки ссылок приложения. "
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
CheckFullScreen();
setContentView(R.layout.activity_main);
SetupNotifications();
CheckFirstTimeWelcome();
InitializeViews();
SetupAds();
SetupToolbar();
SetupWebView();
SetupSwipeToRefresh();
SetupDrawerNavigation();
// ATTENTION: This was auto-generated to handle app links.
Intent appLinkIntent = getIntent();
String appLinkAction = appLinkIntent.getAction();
Uri appLinkData = appLinkIntent.getData();
}
Руководство разработчика Android, за которым я следовал https://developer.android.com/studio/write/app-link-indexing действительно показывало, что код неполон, но я не мог использовать их дальнейший код, как показано ниже, потому что они ссылались на локальный контент приложения, и я пытаюсь попасть на URL, который запустил приложение.
Ниже приведен пример кода;
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){
String recipeId = appLinkData.getLastPathSegment();
Uri appData = Uri.parse("content://com.recipe_app/recipe/").buildUpon()
.appendPath(recipeId).build();
showRecipe(appData);
}
}
Используя исправление, найденное в Включить глубокое связывание для Android для различных структурированных URL , я попытался отредактировать автоматически сгенерированный код в MainActivity.java
Из этого
// ATTENTION: This was auto-generated to handle app links.
Intent appLinkIntent = getIntent();
String appLinkAction = appLinkIntent.getAction();
Uri appLinkData = appLinkIntent.getData();
к этому
Intent intent = getIntent();
String action = intent.getAction();
Uri data = intent.getData();
String link = intent.getDataString();
НЕТ УДАЧИ, поэтому я вернулся к изначально сгенерированным кодам