我在使用FusedLocationAPI运行时权限时遇到问题。
我有一个名为LocationServiceApi的类,其中处理位置
这是我的LocationService.java
public class LocationServiceApi implements GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener,LocationListener{
private Context mContext;
public GoogleApiClient mGoogleApiClient;
private LocationRequest mLocationRequest;
MainActivity mainActivity;
public LocationServiceApi(Context context){
this.mContext = context;
creteGoogleApiClient();
createLocationRequest();
}
public void getLastLocation() {
mainActivity.checkLocationPermission();
mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
}
我在MainActivity中有一个方法名checkLocationPermission
。
但是当我使用MainActivity mactivity; mactivity.checkLocationPermission
时,它会在执行时产生运行时错误
更新
这是来自MainActivity.java的checkLocationPermission代码
@TargetApi(Build.VERSION_CODES.M)
public void checkLocationPermission(){
if(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){
if(android.support.v4.app.ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.ACCESS_FINE_LOCATION)){
}else{
requestPermissions(new String[] { Manifest.permission.ACCESS_FINE_LOCATION},
MY_PERMISSION_REQUEST_FINE_LOCATION);
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode){
case MY_PERMISSION_REQUEST_FINE_LOCATION:
if(grantResults.length >0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
}else{
}
break;
}
}
错误:
08-13 23:11:38.150 11862-11862/com.example.com.blood E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NullPointerException
at com.example.com.blood.LocationServiceApi.getLastLocation(LocationServiceApi.java:67)
at com.example.com.blood.LocationServiceApi.onConnected(LocationServiceApi.java:96)
at com.google.android.gms.common.internal.zzac.zzn(Unknown Source)
at com.google.android.gms.internal.zzbcp.zzm(Unknown Source)
at com.google.android.gms.internal.zzbcd.zzpY(Unknown Source)
at com.google.android.gms.internal.zzbcd.onConnected(Unknown Source)
at com.google.android.gms.internal.zzbcx.onConnected(Unknown Source)
at com.google.android.gms.internal.zzbbi.onConnected(Unknown Source)
at com.google.android.gms.common.internal.zzaa.onConnected(Unknown Source)
at com.google.android.gms.common.internal.zzn.zzrj(Unknown Source)
at com.google.android.gms.common.internal.zze.zzs(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:99)
at android.os.Looper.loop(Looper.java:177)
at android.app.ActivityThread.main(ActivityThread.java:4944)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
at dalvik.system.NativeStart.main(Native Method)