我有在浏览器中打开 URL 的简单代码:
startActivity(Intent(
Intent.ACTION_VIEW, Uri.parse(resources.getString(R.string.application_url))
))
如何将其转换为导航组件项?
我是否需要为此构建自定义导航器,或者导航组件已为这种情况内置了一些东西?
我有在浏览器中打开 URL 的简单代码:
startActivity(Intent(
Intent.ACTION_VIEW, Uri.parse(resources.getString(R.string.application_url))
))
如何将其转换为导航组件项?
我是否需要为此构建自定义导航器,或者导航组件已为这种情况内置了一些东西?
我想通了,对于这个简单的案例,不需要自定义导航器,您只需要创建导航端点:
<activity
android:id="@+id/navigation_endpoint_id"
app:action="android.intent.action.VIEW"
app:data="@string/application_url"/>
对于 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 动作。
如果您使用的是导航抽屉,您可以像这样以编程方式设置它。这样,您可以为特定导航项设置自定义功能,而不会失去导航图的优势
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)
}
}