![](/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.