我看过所有有关注册 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/