Kotlin:如何请求从模拟器访问ACCESS_FINE_LOCATION?

Dan*_*ond 0 android kotlin mapbox android-studio

我正在使用地图,并且在模拟器上运行它时,该地图将无法工作。在我的日志中,我收到一条错误消息,告诉我必须授予对ACCESS_FINE_LOCATION的访问权限。如何在KOTLIN中做到这一点?我只能在使用Java的S / O上找到答案。我得到的错误是:

位置提供者需要ACCESS_FINE_LOCATION权限

abo*_*rak 10

在清单中写此行以请求位置权限

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Run Code Online (Sandbox Code Playgroud)

由于您尝试请求的许可被标记为“危险许可”,因此您必须在运行时请求它

https://developer.android.com/guide/topics/permissions/requesting.html#normal-dangerous

在您的活动或片段的onCreate中编写此内容

  override fun onCreate(savedInstanceState: Bundle?) {
     val permissions = arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION)
    ActivityCompat.requestPermissions(this, permissions,0)

        }
Run Code Online (Sandbox Code Playgroud)

上面的代码不建议在生产就绪的应用程序中使用,建议在测试生产时可以使用,在生产就绪的应用程序中,当您请求运行时权限时,您必须考虑以下情况:-

  • 在权限请求过程中处理配置更改。
  • 如果用户第一次和第二次拒绝许可请求,则进行处理。
  • 显示对话框,说明您需要许可的原因或用户获得许可(如果用户对您具有许可)

如果您需要处理以上所有情况,可以尝试使用此库 https://github.com/permissions-dispatcher/PermissionsDispatcher

或者您可以手动执行。