2016-02-29 169 views
-1

當我開始與Android版本的設備上我的LocationService 6.0或heigher我獲得以下錯誤:如何處理Android 6.0上的ACCESS_FINE_LOCATION權限?

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.internal.ni$a$a.a(Unknown Source) at com.google.android.gms.internal.nj.a(Unknown Source) at com.google.android.gms.internal.nk.a(Unknown Source) at com.google.android.gms.internal.nf$1.a(Unknown Source) at com.google.android.gms.internal.nf$1.a(Unknown Source) at com.google.android.gms.common.api.BaseImplementation$a.b(Unknown Source) at com.google.android.gms.common.api.c.a(Unknown Source) at com.google.android.gms.common.api.c.b(Unknown Source) at com.google.android.gms.internal.nf.requestLocationUpdates(Unknown Source) at com.google.android.gms.internal.jm.f(Unknown Source) at com.google.android.gms.common.api.c.gJ(Unknown Source) at com.google.android.gms.common.api.c.d(Unknown Source) at com.google.android.gms.common.api.c$2.onConnected(Unknown Source) at com.google.android.gms.internal.jm.f(Unknown Source) at com.google.android.gms.internal.jm.dU(Unknown Source) at com.google.android.gms.internal.jl$h.b(Unknown Source) at com.google.android.gms.internal.jl$h.g(Unknown Source) at com.google.android.gms.internal.jl$b.hy(Unknown Source) at com.google.android.gms.internal.jl$a.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:5466) 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)

我在的Manifest.xml設置需要premissions!然後我讀了Android 6.0上的預備版,但我該如何要求用戶接受或設置應用程序所需的版面?

有什麼建議嗎?

如果權限已發

if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
     requestPermissions(new String[]{Manifest.permission.CAMERA}, 108); 
     return; 
    } else { 
     //continueYourTask 
} 

如果沒有自動授予它

+1

https://開頭計算器.COM /問題/ 32635704 /着,得到最權限 – CommonsWare

回答

2

首先檢查顯示一個對話框,以授予訪問權限,並授予時回調被接收爲

@Override 
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
    switch (requestCode) { 
     case 108: 
      if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       //continueYourTask 
      } 
      break; 
     default: 
      super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    } 
}