首页 > 解决方案 > 打印 Mqtt 主题并选择一个订阅其中一个

问题描述

我遇到了一个问题,问题是关于在 android 的多个文本视图中显示来自代理服务器的可用 mqtt 主题,然后选择其中一个来订阅主题

    final MqttAndroidClient client =new MqttAndroidClient(getApplicationContext(),"tcp://iot.eclipse.org:1883","12d45454");
    try {

        client.connect(mqttConnectOptions, null, new IMqttActionListener() {
            @Override
            public void onSuccess(IMqttToken mqttToken) {

                DisconnectedBufferOptions disconnectedBufferOptions = new DisconnectedBufferOptions();
                disconnectedBufferOptions.setBufferEnabled(true);
                disconnectedBufferOptions.setBufferSize(100);
                disconnectedBufferOptions.setPersistBuffer(false);
                disconnectedBufferOptions.setDeleteOldestMessages(false);

                Log.i("ERROR ","Topic="+mqttToken.getTopics());
                textview1.setText(mqttToken.getTopics()[0]);

            }

标签: javaandroidmqttpaho

解决方案


首先让我们谈谈您用于获取主题列表的方法的目的(根据您的代码):

Log.i("ERROR ","Topic="+mqttToken.getTopics());

上述方法 getTopics() 的目的不是为您提供 MQTT 代理上可用主题的详尽列表。此方法返回与您的令牌关联的主题的名称。如果您通过此链接,您将看到该方法在成功完成操作时被调用。此外,您可以查看 IMqttToken 的 java 文档。

也许您可以详细说明您的用例,以便观众可以帮助您,获取所有活动主题不应该是理想的解决方案。


推荐阅读