2017-01-10 35 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

我的問題是不是與啓用適配器,與開始的發現。我可以啓用適配器,但發現過程仍會拋出一個彈出窗口。我編輯了這個問題以更好地反映這個問題 –