我越來越對某些設備API 6.0+下列崩潰:如何捕捉拋出:SecurityException的位置許可
Fatal Exception: java.lang.SecurityException: Client must have ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission to perform any location operations.
at android.os.Parcel.readException(Parcel.java:1693)
at android.os.Parcel.readException(Parcel.java:1646)
at com.google.android.gms.internal.zzed.zza(Unknown Source)
at com.google.android.gms.internal.zzcda.zzdw(Unknown Source)
at com.google.android.gms.internal.zzcdd.zzvQ(Unknown Source)
at com.google.android.gms.internal.zzcdj.zzvQ(Unknown Source)
at com.google.android.gms.location.zzf.zza(Unknown Source)
at com.google.android.gms.internal.zzbaq.zza(Unknown Source)
at com.google.android.gms.internal.zzbdd.zzb(Unknown Source)
at com.google.android.gms.internal.zzbdd.zzqq(Unknown Source)
at com.google.android.gms.internal.zzbdd.onConnected(Unknown Source)
at com.google.android.gms.common.internal.zzaa.onConnected(Unknown Source)
at com.google.android.gms.common.internal.zzn.zzj(Unknown Source)
at com.google.android.gms.common.internal.zze.zzrj(Unknown Source)
at com.google.android.gms.common.internal.zzi.zzrk(Unknown Source)
at com.google.android.gms.common.internal.zzh.handleMessage(Unknown Source)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.os.HandlerThread.run(HandlerThread.java:61)
注意我要求的位置權限的用戶進行相關操作任何位置之前。但由於某些原因,我不能重現,有些設備似乎有報告位置的權限,當我使用:
boolean hasPermission = ActivityCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_GRANTED;
正因爲如此,我需要能夠趕上SecurityException
,而忽略它,當它發生。或者可能想出一種方法來告訴用戶手動啓用位置權限。
當我開始使用播放服務中的新API來請求使用FusedLocationProviderClient
的位置時,上面的崩潰開始發生。它崩潰時,我嘗試做不碎的位置權限下,例如:
LocationServices.getFusedLocationProviderClient(this).getLocationAvailability().addOnFailureListener(myListener);
失敗聽者不會崩潰發送到myListener
不幸。與try..catch
圍繞上面也不起作用。即,這不起作用和應用程序崩潰反正扔SecurityException
:
try {
LocationServices.getFusedLocationProviderClient(this)
.getLocationAvailability()
.addOnFailureListener(myListener);
} catch(Exception e) {
Log.e(e);
}
這個問題似乎涉及到以下幾個問題:
- SecurityException in Android Play Services GoogleApiAvailability class
- Bug: Client must have ACCESS_FINE_LOCATION permission to request PRIORITY_HIGH_ACCURACY locations.這一個標雖然是固定的,但問題似乎仍然存在。
任何想法?
你想在try/catch中捕捉什麼? –
請檢查你的明天有一段時間它發生忘記在清單允許。 –
我有清單中的權限。該應用適用於我嘗試的所有設備。我只在crashlytics上看到上述問題。 – ADev