2017-01-10 31 views
0

我正在为android构建一个蓝牙应用程序。我有一个用户界面按钮,当我按下它时,我想要进入蓝牙发现模式30秒。我现在所拥有的代码完美地完成了这项工作,但它会生成一个弹出窗口,询问我是否允许蓝牙发现。这弹出有点遗憾我的应用程序的流程,所以有没有办法绕过它?抑制蓝牙发现弹出

回答

0

不,你不能绕过它。 Android 6引入了动态权限。这允许用户更精确地指定他想授予App的权限。

对于Android用户,它不会破坏流程。这对他来说很正常。这就是Android的工作原理(以及iOS也是如此)。

请参见:https://developer.android.com/guide/topics/permissions/requesting.html

BLUETOOTH_ADMIN被认为是正常的许可。但是对于扫描,您还需要ACCESS_COARSE_LOCATION和/或ACCESS_FINE_LOCATION。这些被归类为危险的权限,这就是为什么你需要询问用户一次。

还看到:BluetoothLeScanner.startScan()

有关于如何处理权限的几个博客帖子。 James Montemagno为此发布了一个插件。

+0

当用户在弹出窗口上按下时出现了一个事件吗?如果我知道提示何时结束,它不会如此破坏流量 –

+0

有几篇关于如何处理权限的博客帖子。 James Montemagno为此发布了一个插件。我更新了我的答案并添加了链接 –

0

是的。您可以检查它是否启用,启用它编程,

BluetoothManager btm = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE); 
BluetoothAdapter bta = btm.getAdapter(); 
if (!bta.isEnabled()) { 
    boolean ret = bta.enable(); 
    if (!ret) { 
    // enable failed! 
    } 
} 

你需要有BLUETOOTH_ADMIN权限,

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> 
+0

我的问题是不是与启用适配器,与开始的发现。我可以启用适配器,但发现过程仍会抛出一个弹出窗口。我编辑了这个问题以更好地反映这个问题 –