MainActivity的Android FusedLocation运行时权限

时间:2017-08-13 17:05:17

标签: java android

我在使用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)

0 个答案:

没有答案