如何使用新的导航架构组件从扩展 BroadcastReceiver 的类导航到片段

Posted

技术标签:

【中文标题】如何使用新的导航架构组件从扩展 BroadcastReceiver 的类导航到片段【英文标题】:How to navigate to a fragment from a class extending BroadcastReceiver using the new Navigation Architecture Components 【发布时间】:2021-03-20 16:29:11 【问题描述】:

我有我的广播接收器,它应该扫描传入的消息并使用捆绑包并使用新的导航架构组件和导航控制器将原始地址和消息传递给新片段。我被卡住了,因为我在广播接收器中找不到视图。这是我到目前为止所尝试的。

public class SimpleSmsReceiver extends BroadcastReceiver 

    @Override
    public void onReceive(Context context, Intent intent) 

        Bundle pudsBundle = intent.getExtras();
        Object[] pdus = (Object[]) pudsBundle.get("pdus");
        SmsMessage messages = SmsMessage.createFromPdu((byte[])pdus[0]);

        Bundle bundle = new Bundle();
        bundle.putString("MessageNumber", messages.getOriginatingAddress());
        bundle.putString("Message", messages.getMessageBody());

        Navigation.findNavController(context).navigate(R.id.nav_otp_fragment, bundle);


    



我收到错误必需类型:提供的视图:上下文

【问题讨论】:

【参考方案1】:

BroadcastReceivers 不是 UI 组件。您无法对BroadcastReceiver 中的 UI 执行任何操作。如果您的BroadcastReceiver 引用了您的Activity,那么它可以调用Activity 中的一个方法(以数据作为参数),以便Activity 然后可以创建Fragment 并执行其他任何必要的操作。

【讨论】:

以上是关于如何使用新的导航架构组件从扩展 BroadcastReceiver 的类导航到片段的主要内容,如果未能解决你的问题,请参考以下文章

在 FAB 单击时导航到片段(导航架构组件)

如何在新的导航抽屉架构组件中实现共享应用或评分应用或注销功能

如何使用导航架构组件从片段中获取结果?

导航架构组件 - 对话框片段

Android 导航架构组件 - 导航架构组件是不是意味着仅使用单个活动?

如何同时使用导航抽屉和底部导航 - 导航架构组件