java - 发现蓝牙设备
问题描述
这个用于搜索和发现蓝牙设备的代码
我在 BroadcastReceiver 上制作了 Toast,他们甚至没有显示它(android 7 猜测许可问题我只是把它放在 mainfist 上)
Button button;
ListView listView;
BluetoothAdapter mBluetoothAdapter;
Integer requestbluetooth=1;
ArrayList<String> arrayList;
ArrayAdapter<String> Adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
arrayList =new ArrayList<>();
button=findViewById(R.id.printButton);
listView=findViewById(R.id.listView);
Adapter = new ArrayAdapter<String>(getBaseContext(),android.R.layout.simple_list_item_1,arrayList);
listView.setAdapter(Adapter);
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
registerReceiver(receiver, filter);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
mBluetoothAdapter.startDiscovery();
}
});
}
BroadcastReceiver receiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
String deviceName = device.getName();
String deviceHardwareAddress = device.getAddress();
arrayList.add(deviceName);
Adapter.notifyDataSetChanged();
}
}
};
解决方案
从 Android 6.0(API 级别 23)开始,您必须在运行时请求权限。大多数应用程序在用户第一次启动应用程序时都会这样做。
要检查您是否已经拥有权限,请使用
int permissionCheck = ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.READ_SMS);
要请求许可,请使用
ActivityCompat.requestPermissions(thisActivity, new String[]{Manifest.permission.READ_SMS}, MY_PERMISSIONS_REQUEST_READ_CONTACTS);
推荐阅读
- pyspark - 将数据写入 Redshift 太慢
- c# - 抑制 Blazor css ::deep 警告
- javascript - 如何更改 tmImage 中的相机输入设备?
- android - 如何在选项卡式活动上呈现片段
- visual-studio-code - Jupyter Notebook 卡在 VSCode 中的加载循环中
- lotus-notes - Lotus Notes 文档 - 损坏且字段信息选项卡为空
- html - 在 R 中网络抓取 coinmarketcap 时遇到问题
- javascript - 如何使用 js 数据表对来自 sqlite3 django 的日期的列进行排序
- apache-spark - 如何在给定数据集中查找 Pyspark 中的时差和距离?
- javascript - Google api - Dialogflow 自定义负载