Я хочу создать неявный deeplink с помощью компонентов навигации.
Но когда я запускаю свое приложение со следующим URL-адресом:
https://my-app.com/cars/ef123-aaf33/parts
Я получаю следующую ошибку:
java.lang.RuntimeException: Unable to start activity ComponentInfo{myapp/screens.car.CarActivity}: java.lang.IllegalStateException:
Activity screens.car.CarActivity@3b8d354 has null extras in Intent { act=android.intent.action.VIEW cat=[android.intent.category.BROWSABLE] dat=https://my-app.com/... flg=0x13008000 cmp=myapp/screens.car.CarActivity }
У намерения нет дополнительных функций, но он должен содержать carUuid
, определенный как заполнитель URL-адреса в deeplink. Ошибка выдается, как только оценивается navArgs()
.
Это моя установка:
nav_graph.xml
<fragment
android:id="@+id/fragment_parts"
android:name="myapp.screens.parts.PartsFragment"
android:label="@string/parts"
tools:layout="@layout/fragment_parts">
<deepLink
android:id="@+id/deepLink"
app:uri="my-app.com/cars/{carUuid}/parts" />
<argument
android:name="carUuid"
app:argType="string" />
</fragment>
AndroidManifest
<activity android:name=".screens.car.CarActivity" >
<nav-graph android:value="@navigation/nav_graph" />
</activity>
CarActivity
class CarActivity : AppCompatActivity() {
private val carViewModel: CarViewModel by viewModel { parametersOf(args.carUuid) }
private val args: CarActivityArgs by navArgs()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
DataBindingUtil.setContentView<ActivityCarBinding>(this, R.layout.activity_car).also { binding ->
binding.lifecycleOwner = this
binding.carViewModel = carViewModel
}
}
Полезные ссылки:
документация Android для неявных DeepLinks
на DeepLinks от RayWenderlich а>
---- ОБНОВЛЕНИЕ ----
Я создал минимальный образец проекта и нашел подсказки о том, что происходит / идет не так. Я разместил все в официальном трекере проблем: https://issuetracker.google.com/issues/155690730 а>