Статический ярлык приложения Android с навигационной библиотекой - PullRequest
0 голосов
/ 08 февраля 2019

У моего приложения есть один статический ярлык, и я использую компонент архитектуры навигации.

Я использую следующую реализацию, но она не работает на Android 9.

В моемMainActivity:

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)
    }
}

shortcuts.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>

При отладке приложения я заметил, что вызывается метод findNavController(...), но на экране ничего не происходит.

Кроме того, я не переопределяю onStart(...) или onResume(...).

Есть ли какой-либо способ реализации ярлыков приложений с компонентом навигации или я здесь что-то делаю ужасно неправильно?

1 Ответ

0 голосов
/ 09 февраля 2019

Навигация не поддерживает глубокую связь только intent.action.Однако вы можете добавить элемент android:data к элементу <intent>, а затем добавить неявную глубокую ссылку на график навигации.Таким образом, вам не придется писать какой-либо конкретный код для обработки Intent.

Например, измените ваш shortcuts.xml, добавив атрибут 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" />

и в своем XML-файле навигационной диаграммы добавьте элемент <deepLink> для того же URL:

<fragment
  android:id="@+id/add_book_entry_fragment"
  android:name=".AddBookEntryFragment">
  <deepLink app:uri="moneybook://add_book_entry" />
</fragment>
...