麻烦理解intent.getaction();

时间:2014-09-19 17:23:20

标签: android bluetooth

private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
    String action = intent.getAction();
    // When discovery finds a device
    if (BluetoothDevice.ACTION_FOUND.equals(action)) {
        // Get the BluetoothDevice object from the Intent
        BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
        // Add the name and address to an array adapter to show in a ListView
        mArrayAdapter.add(device.getName() + "\n" + device.getAddress());
    }
 }
};
// Register the BroadcastReceiver
   IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
   registerReceiver(mReceiver, filter); // Don't forget to unregister during onDestroy`

以上代码用于扫描BluetoothDevices并将其添加到mArrayAdapter中。 但是我不理解这些行String action = intent.getAction();

if (BluetoothDevice.ACTION_FOUND.equals(action))

有人可以提供一个简短的解释。我已经搜索过,但我很简单,不了解intent.getaction()的用法。它返回什么以及如何设置值?。

2 个答案:

答案 0 :(得分:0)

嗯,实际上非常简单。

每一个意图都只是一条信息。但是,您可以将意图从一个应用程序发送到另一个应用程序因此,当您从另一个应用程序(在这种情况下为蓝牙控制器)收到意图时,您需要知道它的含义。这基本上就是行动。

并且,因为广播接收器通常可以接收几种不同类型的意图,所以'if'确保您刚收到的意图确实意味着已找到蓝牙设备。

我建议您阅读有关意图和意图过滤器的精彩文章:http://developer.android.com/guide/components/intents-filters.html

编辑:正如捣蛋鬼所说,在你的情况下,它确实没有必要。

答案 1 :(得分:0)

在您的情况下,if (BluetoothDevice.ACTION_FOUND.equals(action))不是必需的,因为您只是使用过滤器new IntentFilter(BluetoothDevice.ACTION_FOUND)注册该广播接收器。