Android附近订阅失败:2807缺少麦克风权限

时间:2019-05-03 17:08:43

标签: android android-permissions microphone google-nearby

我正在尝试将Android附近的(https://developers.google.com/nearby/)集成到我的应用中,但是当我尝试使用nearby.subscribe时,它会失败,并显示“缺少麦克风权限”错误。

由于找不到添加到AndroidManifest.xml的权限,因此我搜索了一下并尝试添加RECORD_AUDIO,但是很遗憾,它不能解决问题。

询问权限(也在运行时):

<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>

代码:

val nearby = Nearby.getMessagesClient(this, MessagesOptions.Builder().setPermissions(NearbyPermissions.BLE).build())
nearby.publish(Message("Hello".toByteArray()))
nearby.subscribe(object : MessageListener() {
   override fun onDistanceChanged(p0: Message?, p1: Distance?) {
      super.onDistanceChanged(p0, p1)
      toast("onDistanceChanged")
   }
   override fun onLost(p0: Message?) {
      super.onLost(p0)
      toast("onLost")
   }
   override fun onBleSignalChanged(p0: Message?, p1: BleSignal?) {
      super.onBleSignalChanged(p0, p1)
      toast("onBleSignalChanged")
   }

   override fun onFound(p0: Message?) {
      super.onFound(p0)
      toast("onFound")
   }
}).addOnFailureListener { toast("onFailure " + it.message) }
  .addOnSuccessListener { toast("onSuccess") }

错误:

2807: Missing microphone permission

如何使附近的API工作?

1 个答案:

答案 0 :(得分:0)

在创建附近MessagesClient时,您指定要仅使用 BLE权限。默认情况下,附近的连接api使用Strategy.DEFAULT,其中包括麦克风访问权限。因此,您的订阅/发布将因为没有麦克风权限而失败。

要使“附近的API”正常工作,请分别在订阅或发布时传递使用请求的Subscribe OptionsPublish OptionsNearbyPermissions。 Strategy.BLE_ONLY仅适用于NearestPermissions.BLE。

请参阅api说明/文档hereThis是您的错误代码和描述。