gpt4 book ai didi

java - 如何在没有用户确认的情况下以编程方式设置可发现时间?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:26:02 25 4
gpt4 key购买 nike

我经常用这个

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);
}
}

但这会提示用户确认。有没有办法以编程方式绕过这个?

此外,我想“始终可发现 mode” 上没有“新闻”?

最佳答案

经过一些研究后,我得出结论,在没有用户交互的情况下设置可发现的超时只有在根访问权限下才有可能(如前一个答案中所建议的那样)。但是对于需要的人来说,这是必要的解决方案:

private void ensureBluetoothDiscoverability() {
try {
IBluetooth mBtService = getIBluetooth();
Log.d("TESTE", "Ensuring bluetoot is discoverable");
if(mBtService.getScanMode() != BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
Log.e("TESTE", "Device was not in discoverable mode");
try {
mBtService.setDiscoverableTimeout(100);
// mBtService.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE, 1000);
} catch(Exception e) {
Log.e("TESTE", "Error setting bt discoverable",e);
}
Log.i("TESTE", "Device must be discoverable");
} else {
Log.e("TESTE", "Device already discoverable");
}
} catch(Exception e) {
Log.e("TESTE", "Error ensuring BT discoverability", e);
}
}


<uses-permission android:name="android.permission.WRITE_SETTINGS" />  
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />

然后新建一个包android.bluetooth,在IBluetooth.aidl和IBluetoothCallback.aidl里面放两个文件,里面的代码如图here .

这将允许访问标准 API 上不可用的功能,但对于其中一些功能,您将需要“写入安全设置”的权限(上面的注释行是您将因缺少权限而获得该异常的地方)过程/用户)。

关于java - 如何在没有用户确认的情况下以编程方式设置可发现时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8742760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com