![](/img/trans.png)
[英]"gps" location provider requires ACCESS_FINE_LOCATION permission for android 6.0
[英]Android requestLocationUpdates not working (GPS_PROVIDER, ACCESS_FINE_LOCATION)
我正在尝试在我的应用程序上实现地理定位功能,但我错过了一些东西。
你们能帮帮我吗?
在 AndroidManifest 我放了这些权限:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
这是带有警报的 MainActivity,如果地理位置关闭,则警告用户:
class MainActivity : AppCompatActivity() {
private lateinit var mLocationManager : LocationManager
val mLocationListener = LocationListener {
Log.i("Location", "latitude ${it.latitude}, logitude ${it.longitude}")
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
mLocationManager = getSystemService(LOCATION_SERVICE) as LocationManager
if (ActivityCompat.checkSelfPermission(
this,
Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
) {
ActivityCompat.requestPermissions(
this,
arrayOf(Manifest.permission.ACCESS_FINE_LOCATION,),
7777
)
}
checkGPSEnabled()
}
@SuppressLint("LongLogTag", "MissingPermission")
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
Log.i("onRequestPermissionsResult", "requestCode $requestCode, grantResults $grantResults")
permissions.forEach {
Log.i("onRequestPermissionsResult", "permission $it")
}
when(requestCode) {
7777 -> {
Log.i("onRequestPermissionsResult", "request sended")
mLocationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
1000,
50F,
mLocationListener
)
}
}
}
private fun checkGPSEnabled() {
if (!mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
val alertDialog: AlertDialog = AlertDialog.Builder(this).create()
alertDialog.setMessage("Activate geolocation!")
alertDialog.setButton(
AlertDialog.BUTTON_NEUTRAL,
"OK"
) { dialog, _ -> dialog.dismiss() }
alertDialog.show()
}
}
}
那是世袭18.1。 我在模拟器中尝试了该应用程序,一切正常。
这是世袭18.1。
不同的手机是不同的手机。 GPS 具有高度的设备特定性。
GPS 测试应用程序可以直接访问硬件。 然而,这不是谷歌地图的工作方式。 Google 地图从 Google Play 服务获取 GPS 坐标,因此,如果您的 Google Play 服务的位置服务未配置为在需要时运行。 这将是一个问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.