打印 Mqtt 主题并选择一个订阅其中一个

Print Mqtt topics and Choose one to subscribe to one of them

我遇到了一个问题,这个问题是关于在 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]);

            }

首先说一下您使用的获取主题列表的方法的目的(根据您的代码):

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

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

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