問題描述
我只在使用模擬器時遇到了一個奇怪的錯誤.我發(fā)現(xiàn)了一個 9 個月前有相同問題的問題,但根本沒有答案...
我正在使用谷歌播放服務(wù)位置來獲取我的應(yīng)用程序中的位置,并且我確定我的清單權(quán)限并且一切都在我的手機上完美運行,僅使用模擬器時會出現(xiàn)問題,我在兩者上都嘗試了不同的模擬器我的 iMac 和 Windows 機器.
我懷疑模擬器不支持這個基本功能!
這是我的清單代碼:
<?xml version="1.0" encoding="utf-8"?><清單 xmlns:android="http://schemas.android.com/apk/res/android"包="com.orderme.ordermeandroid" ><uses-permission android:name="android.permission.INTERNET"></uses-permission><使用權(quán)限android:name="android.permission.ACCESS_COARSE_LOCATION"/><使用權(quán)限android:name="android.permission.ACCESS_FINE_LOCATION"/>
這里是觸發(fā)異常的地方:
LocationRequest mLLocationRequest = new LocationRequest();mLocationRequest.setInterval(10000);mLocationRequest.setFastestInterval(5000);mLLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient,mLocationRequest,this);
堆棧跟蹤:
08-26 14:01:19.699 10157-10157/com.orderme.ordermeandroid E/AndroidRuntime: 致命例外:主要進(jìn)程:com.orderme.ordermeandroid,PID:10157java.lang.SecurityException:客戶端必須具有 ACCESS_FINE_LOCATION 權(quán)限才能請求 PRIORITY_HIGH_ACCURACY 位置.在 android.os.Parcel.readException(Parcel.java:1599)在 android.os.Parcel.readException(Parcel.java:1552)在 com.google.android.gms.location.internal.zzg$zza$zza.zza(未知來源)在 com.google.android.gms.location.internal.zzi.zza(未知來源)在 com.google.android.gms.location.internal.zzj.zza(未知來源)在 com.google.android.gms.location.internal.zzd$1.zza(未知來源)在 com.google.android.gms.location.internal.zzd$1.zza(未知來源)在 com.google.android.gms.common.api.zzc$zza.zzb(未知來源)在 com.google.android.gms.common.api.zzf.zza(未知來源)在 com.google.android.gms.common.api.zzf.zzb(未知來源)在 com.google.android.gms.common.api.zzi.zzb(未知來源)在 com.google.android.gms.location.internal.zzd.requestLocationUpdates(未知來源)在 com.orderme.ordermeandroid.Main.MainActivity.onConnected(MainActivity.java:184)在 com.google.android.gms.common.internal.zzk.zzh(未知來源)在 com.google.android.gms.common.api.zzg.zznt(未知來源)在 com.google.android.gms.common.api.zzg.onConnected(未知來源)在 com.google.android.gms.common.api.zzi$2.onConnected(未知來源)在 com.google.android.gms.common.internal.zzj$zzg.zzoD(未知來源)在 com.google.android.gms.common.internal.zzj$zza.zzc(未知來源)在 com.google.android.gms.common.internal.zzj$zza.zzs(未知來源)在 com.google.android.gms.common.internal.zzj$zzc.zzoF(未知來源)在 com.google.android.gms.common.internal.zzj$zzb.handleMessage(未知來源)在 android.os.Handler.dispatchMessage(Handler.java:102)在 android.os.Looper.loop(Looper.java:148)在 android.app.ActivityThread.main(ActivityThread.java:5417)在 java.lang.reflect.Method.invoke(本機方法)在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
我的猜測是您在 Android 6.0+ 模擬器上運行此程序,并且您的 targetSdkVersion
為 23 或更高.p>
在這種情況下,ACCESS_COARSE_LOCATION
和 ACCESS_FINE_LOCATION
是 Android 6.0 運行時權(quán)限系統(tǒng).修改您的應(yīng)用以加入此系統(tǒng),或?qū)⒛?targetSdkVersion
降至 23 以下.
I'm having a weird error while using the emulator ONLY. I found one question that has the same issue 9 months ago with no answers at all...
I'm using google play services locations to get locations in my app and I'm sure of my manifest permissions and everything works perfectly on my phone, the problem occurs when using an emulator only, and I tried different emulators on both my iMac and Windows machines.
I doubt that emulators don't support this basic function!
here is my manifest code:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.orderme.ordermeandroid" >
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
and here is where the exception is firing:
LocationRequest mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(10000);
mLocationRequest.setFastestInterval(5000);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient,mLocationRequest,this);
stack trace:
08-26 14:01:19.699 10157-10157/com.orderme.ordermeandroid E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.orderme.ordermeandroid, PID: 10157
java.lang.SecurityException: Client must have ACCESS_FINE_LOCATION permission to request PRIORITY_HIGH_ACCURACY locations.
at android.os.Parcel.readException(Parcel.java:1599)
at android.os.Parcel.readException(Parcel.java:1552)
at com.google.android.gms.location.internal.zzg$zza$zza.zza(Unknown Source)
at com.google.android.gms.location.internal.zzi.zza(Unknown Source)
at com.google.android.gms.location.internal.zzj.zza(Unknown Source)
at com.google.android.gms.location.internal.zzd$1.zza(Unknown Source)
at com.google.android.gms.location.internal.zzd$1.zza(Unknown Source)
at com.google.android.gms.common.api.zzc$zza.zzb(Unknown Source)
at com.google.android.gms.common.api.zzf.zza(Unknown Source)
at com.google.android.gms.common.api.zzf.zzb(Unknown Source)
at com.google.android.gms.common.api.zzi.zzb(Unknown Source)
at com.google.android.gms.location.internal.zzd.requestLocationUpdates(Unknown Source)
at com.orderme.ordermeandroid.Main.MainActivity.onConnected(MainActivity.java:184)
at com.google.android.gms.common.internal.zzk.zzh(Unknown Source)
at com.google.android.gms.common.api.zzg.zznt(Unknown Source)
at com.google.android.gms.common.api.zzg.onConnected(Unknown Source)
at com.google.android.gms.common.api.zzi$2.onConnected(Unknown Source)
at com.google.android.gms.common.internal.zzj$zzg.zzoD(Unknown Source)
at com.google.android.gms.common.internal.zzj$zza.zzc(Unknown Source)
at com.google.android.gms.common.internal.zzj$zza.zzs(Unknown Source)
at com.google.android.gms.common.internal.zzj$zzc.zzoF(Unknown Source)
at com.google.android.gms.common.internal.zzj$zzb.handleMessage(Unknown Source)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
My guess is that you are running this on an Android 6.0+ emulator and you have a targetSdkVersion
of 23 or higher.
In that case, ACCESS_COARSE_LOCATION
and ACCESS_FINE_LOCATION
are part of the Android 6.0 runtime permission system. Either revise your app to participate in this system, or drop your targetSdkVersion
below 23.
這篇關(guān)于僅限 ACCESS_FINE_LOCATION 權(quán)限錯誤模擬器的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!