#android #android-studio #url #android-manifest #android-deep-link
Вопрос:
Как бы глубокая ссылка в манифесте открывала действие по этой ссылке
https://myapp.domain.com/#/view/abc
где только abc-это аргумент, который изменяется и является тем, который мне нужно, чтобы приложение принимало в качестве параметра .
Я пробовал это, но это не сработало
<data
android:host="myapp.domain.com"
android:pathPrefix="/#/view"
android:scheme="https" />
<data
android:host="myapp.domain.com"
android:pathPrefix="/#/view"
android:scheme="http" />
<data
android:host="myapp.domain.com"
android:pathPrefix="/#/view"
android:scheme="app" />
Ответ №1:
Попробуйте сделать это внутри тега действия в файле манифеста
<intent-filter android:label="Example">
<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="myapp.domain.com"
android:pathPrefix="/#" />
<!-- note that the leading "/" is required for pathPrefix-->
</intent-filter>
Внутри Activity.java
Uri uri = getIntent().getData();
if(uri != null){
List<String> segments = uri.getPathSegments();
Log.e(TAG, "onCreate: " segments );
Log.e(TAG, "onCreate: " segments.get((segments.size()-1)) );
}
Комментарии:
1. Не работает, при нажатии на ссылку Android отображается только открытым в Chrome, но не в моем приложении 🙁
Ответ №2:
После тяжелой работы я использовал это:
<data android:scheme="https"
android:host="myapp.domain.com"
android:pathPrefix="/" />
И в моей Деятельности:
String id = data.toString().replaceAll(".*/", "");
ПРИМЕЧАНИЕ: Я не смог использовать uri.getPathSegments(); потому что он возвращает мне пустой список.