Mi aplicación tiene un acceso directo estático y estoy usando el componente de arquitectura de navegación.
Estoy usando la siguiente implementación pero no funciona en Android 9.
En mi actividad principal:
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) setupToolbar() setupNavigationDrawer() checkPermissions() if (intent.action == MoneyBook.SHORTCUT_ACTION_ADD_BOOKENTRY) { findNavController(R.id.nav_host_fragment).popBackStack(R.id.action_entriesFragment_to_newBookEntryFragment, false) } }atajos.xml:
<shortcuts xmlns:android="http://schemas.android.com/apk/res/android"> <shortcut android:enabled="true" android:icon="@drawable/ic_shortcut_addbookentry" android:shortcutId="shortcut_addbookentry" android:shortcutLongLabel="@string/shortcut_addbookentry_label_short" android:shortcutShortLabel="@string/shortcut_addbookentry_label_short"> <intent android:action="at.guger.moneybook.action.ADD_BOOKENTRY" android:targetClass="at.guger.moneybook.activity.MainActivity" android:targetPackage="at.guger.moneybook.dev" /> </shortcut> </shortcuts> Al depurar la aplicación, noté que se llama al método findNavController(...) , pero no sucede nada en la pantalla.
Además, no onStart(...) o onResume(...) .
¿Hay alguna forma de implementar accesos directos de aplicaciones con el componente de navegación o estoy haciendo algo terriblemente mal aquí?
La navegación no admite enlaces profundos solo por intent.action . Sin embargo, puede agregar un elemento android:data a su elemento <intent> y luego agregar un enlace profundo implícito a su gráfico de navegación. Al hacer esto, no tendrá que escribir ningún código específico para manejar el Intent.
Por ejemplo, cambie su shortcuts.xml para agregar el atributo android:data :
<intent android:action="at.guger.moneybook.action.ADD_BOOKENTRY" android:targetClass="at.guger.moneybook.activity.MainActivity" android:targetPackage="at.guger.moneybook.dev" android:data="moneybook://add_book_entry" /> y en su archivo XML de gráficos de navegación, agregue un elemento <deepLink> para la misma URL:
<fragment android:id="@+id/add_book_entry_fragment" android:name=".AddBookEntryFragment"> <deepLink app:uri="moneybook://add_book_entry" /> </fragment>