android - 带有导航库的 Android 应用静态快捷方式
问题描述
我的应用程序有一个静态快捷方式,我正在使用导航架构组件。
我正在使用以下实现,但它不适用于 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)
}
}
快捷方式.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(...)
or onResume(...)
。
有没有给定的方法来实现带有导航组件的应用程序快捷方式,或者我在这里做错了什么?
解决方案
导航不支持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>
推荐阅读
- java - java: ParseException: 无法解析的日期
- c# - 如何解决实体框架中的 system.data 配置问题
- node.js - 贝宝不返回自定义变量
- macos - 使用 PyQt5.QtBluetooth 扫描蓝牙设备
- react-native - React-Native:没有 Expo 的 facebook 登录
- mysql - 如何在具有多个外键的 Spring Boot/JPA 中构造实体?
- javascript - 为什么不能将键码值记录到控制台窗口?
- python - 如何找到两个列表之间的不同组合?
- asp.net - 在单个 API 帖子中动态推送每个设备的不同通知
- python - 使用 Scapy 的数据包嗅探器