5

幾天前,Crashlytics的startet報告我的Google Play服務位置API實現中出現奇怪的崩潰。在Google Play服務API連接後,我嘗試使用FusedLocationApi.getLastLocation(...)獲取最後一個已知位置,但此通話在安全異常中結束,告訴我我沒有正確的權限來執行此操作(請參閱堆棧跟蹤下面)Android Play服務FusedLocatioAPI getLastLocation崩潰,SecurityException

我確實有運行時權限,這段代碼在大多數設備上工作了幾個月。這個錯誤主要發生在OnePlus One上,我可以通過Android 6在HTC One M8上重新制作它。

我認爲問題與最新的谷歌播放服務更新有關,但我無法驗證這一點。僅當設備位置服務被禁用時(這實際上會自動從Google Play服務中自動移除位置權限),纔會出現此錯誤,因此我認爲這些設備上的最新播放服務存在一個引發Google Play服務沒有的安全異常的錯誤儘管我的應用程序有權訪問位置數據。

是否有人遇到過類似的問題,也許已經找到了更好的解決方案,然後嘗試抓住整個事情或谷歌有關這個問題的任何更新?

UPDATE:


我可以再次的HTC One M8採用Android 6.0和拋出:SecurityException測試這也拋出啓用了位置服務和grantet權限的應用程序和遊戲服務。 BALANCED_POWER和HIGH_ACCURACY之間切換具有除chaning異常消息

客戶端必須有ACCESS_COARSE_LOCATION或ACCESS_FINE_LOCATION執行任何位置操作 許可沒有任何影響。

文件訪問權限沒有問題,我使用Android LocationManager的fallback實現拋出SecurityException,但只有當位置服務設置爲gps時才確定位置。相互衝突的事實:Google Play服務在使用Google地圖時每隔幾秒就會崩潰,並且找不到位置。只有導航,這使得GPS可以找到的位置。

總之 的的HTC One M8(在Android 6.0軟件NR。6.12.401.4)與谷歌播放服務56年2月9日(438-124593566)與位置服務,不僅全球定位系統的一個普遍問題。 Google Play服務FusedLocationApi存在權限系統問題,導致授予權限,但會引發SecurityException。使用舊的LocationManager實現沒有安全問題,但只能在設備設置僅設置爲gps時確定位置。


堆棧跟蹤:

Fatal Exception: java.lang.SecurityException: Client must have ACCESS_FINE_LOCATION permission to request PRIORITY_HIGH_ACCURACY locations. 
    at android.os.Parcel.readException(Parcel.java:1620) 
    at android.os.Parcel.readException(Parcel.java:1573) 
    at com.google.android.gms.location.internal.zzi$zza$zza.zza(Unknown Source) 
    at com.google.android.gms.location.internal.zzk.getLastLocation(Unknown Source) 
    at com.google.android.gms.location.internal.zzl.getLastLocation(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.internal.zznt$zza.zzre(Unknown Source) 
    at com.google.android.gms.internal.zzoc.connect(Unknown Source) 
    at com.google.android.gms.internal.zzoc.zzd(Unknown Source) 
    at com.google.android.gms.internal.zzoh.zzd(Unknown Source) 
    at com.google.android.gms.internal.zzof.zzd(Unknown Source) 
    at com.google.android.gms.location.internal.zzd.getLastLocation(Unknown Source) 
    at com.my.package.location.PlayServicesLocationFinder.onConnected(PlayServicesLocationFinder.java:74) 
    at com.google.android.gms.common.internal.zzl.zztI(Unknown Source) 
    at com.google.android.gms.internal.zzof.zzc(Unknown Source) 
    at com.google.android.gms.internal.zzod.zzsb(Unknown Source) 
    at com.google.android.gms.internal.zzod.begin(Unknown Source) 
    at com.google.android.gms.internal.zzoh.zzc(Unknown Source) 
    at com.google.android.gms.internal.zznw.onConnected(Unknown Source) 
    at com.google.android.gms.common.internal.zzk$1.onConnected(Unknown Source) 
    at com.google.android.gms.common.internal.zzd$zzj.zzl(Unknown Source) 
    at com.google.android.gms.common.internal.zzd$zza.zztp(Unknown Source) 
    at com.google.android.gms.common.internal.zzd$zza.zztp(Unknown Source) 
    at com.google.android.gms.common.internal.zzd$zze.zztr(Unknown Source) 
    at com.google.android.gms.common.internal.zzd$zzd.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:5461) 
    at java.lang.reflect.Method.invoke(Method.java) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
+0

https://stackoverflow.com/questions/32635704/android-permission-doesnt-work-even-if-i-have-declared-it – CommonsWare

+0

我要求權限的我可以保證我有權請求FINE和CORSE_LOCATION – marilion91

+0

用戶是否有可能拒絕這個權限並且你處理了錯誤? –

回答