我经常使用这个
private void ensureDiscoverable() {
if(D) Log.d(TAG, "ensure discoverable");
if (mBluetoothAdapter.getScanMode() !=
BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);
startActivity(discoverableIntent);
}
}
Run Code Online (Sandbox Code Playgroud)
但这会提示用户确认.有没有办法以编程方式绕过这个?
另外,我认为"永远可发现的模式 " 上没有"新闻"?
我可以使用以下代码在没有任何提示的情况下打开/关闭蓝牙.它需要BLUETOOTH和BLUETOOTH_ADMIN权限.
boolean isEnabled = bluetoothAdapter.isEnabled();
if (enable && !isEnabled) {
return bluetoothAdapter.enable();
} else if (!enable && isEnabled) {
return bluetoothAdapter.disable();
}
Run Code Online (Sandbox Code Playgroud)
但没有找到任何方法可以在没有用户提示的情况下设置蓝牙.每次都向用户提示它.我害怕没有"不要再问我"的功能了.有没有什么好方法可以让蓝牙设备被发现?我不关心持续时间.我的设备也没有扎根.
我找到了BluetoothAdapter.java的源代码,它有一个名为的公共方法setDiscoverableDuration.但为什么我无法访问它?为什么在Api文档中隐藏了一些公共方法?他们是怎么做到的?所有方法都是公开的.