6

我有在浏览器中打开 URL 的简单代码:

startActivity(Intent(
    Intent.ACTION_VIEW, Uri.parse(resources.getString(R.string.application_url))
))

如何将其转换为导航组件项?

我是否需要为此构建自定义导航器,或者导航组件已为这种情况内置了一些东西?

4

3 回答 3

6

我想通了,对于这个简单的案例,不需要自定义导航器,您只需要创建导航端点:

<activity
    android:id="@+id/navigation_endpoint_id"
    app:action="android.intent.action.VIEW"
    app:data="@string/application_url"/>
于 2018-08-06T09:51:34.787 回答
1

对于 Dynamic Uri,我们可以像这样传递数据:

<activity
    android:id="@+id/whatsappRedirectionActivity"
    app:action="android.intent.action.VIEW"
    app:dataPattern="https://wa.me/{number}">
    <argument
         android:name="number"
         app:argType="string" />
</activity>

这需要包含在您要重定向的导航图中。使用它,我们也可以使用 safeargs 动作。

于 2021-01-29T09:45:11.253 回答
0

如果您使用的是导航抽屉,您可以像这样以编程方式设置它。这样,您可以为特定导航项设置自定义功能,而不会失去导航图的优势

navigationView.setNavigationItemSelectedListener {item->
                drawerLayout.closeDrawer(GravityCompat.START)
                when(item.itemId){
                    R.id.navigation_rate -> {
                        startActivity(Intent(
                                Intent.ACTION_VIEW, Uri.parse(resources.getString(R.string.app_playstore_url))
                        ))
                        return@setNavigationItemSelectedListener true
                    }
                    else  -> NavigationUI.onNavDestinationSelected(item, navController)
                }
            }
于 2021-01-07T06:28:31.743 回答