android - 如何在扩展 BroadcastReceiver 的类中注册广播接收器?

标签 android bluetooth broadcastreceiver android-broadcastreceiver

我看过所有有关注册 BroadcastReceiver 的示例,并且所有示例都在没有扩展 BroadcastReceiver 类的情况下注册了接收器。但是我有以下代码

package vertex2016.mvjce.edu.bluealert;

import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import java.util.UUID;

public class SearchBLDev extends BroadcastReceiver {

    private BluetoothAdapter BTAdapter = BluetoothAdapter.getDefaultAdapter();
    private ArrayAdapter BTArrayAdapter;
    private ListView BTListView;
    private BluetoothDevice BTD;
    public UUID myUUID;

    IntentFilter filter = new IntentFilter();

    public void discoveryStart()
    {
        filter.addAction(BluetoothDevice.ACTION_FOUND);
        filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED);
        filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
        registerReceiver(SearchBLDev, filter) //PROBLEM OCCURS HERE        
    }

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

我可以使用 registerReceiver 方法注册一个 Receiver。它显示错误。

感谢您的宝贵时间。

最佳答案

您需要一个 Context 来调用 registerReceiver(this, filter),因此您应该将其作为参数传递。

public void discoveryStart(Context context)
{
    filter.addAction(BluetoothDevice.ACTION_FOUND);
    filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED);
    filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
    context.registerReceiver(this, filter) //PROBLEM OCCURS HERE
}

然后你可以从你的Activity中调用它:

SearchBLDev broadcastReceiver = new SearchBLDev();
broadcastReceiver.discoveryStart(this);

关于android - 如何在扩展 BroadcastReceiver 的类中注册广播接收器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37779480/

相关文章:

android - 无法在android studio中拖放一个简单的imageView

android - 类型不匹配 : cannot convert from ListFragment to Fragment

IOS 连接到 BLE 设备 EXC_BREAKPOINT at didSelectRowAtIndexPath

android - 如何将 Android 应用程序正确连接到支持蓝牙的 Arduino 微 Controller 上的 RFCOMM socket ?

java - 向特定接收者发送有序广播?

android - 如何从 Firebase 数据库中获取随机对象?

android - 共享首选项上的辅助功能设置更改值

android - Android 应用程序被杀死后停止警报

android - 如何在 Android 中实例化 L2Cap 套接字?

Android GCM(推送通知): device doesn't receive notification if application is stopped