本文介绍了checkSelfPermission空指针6.0的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个检查permisions问题总是说我的空指针在调试6.0:

我在做什么错

 公共字符串getGeolocation(上下文的背景下){    尝试{
        INT MY_PERMISSION_ACCESS_COURSE_LOCATION = 1000;        如果(ContextCompat.checkSelfPermission(上下文,android.Manifest.permission.ACCESS_COARSE_LOCATION)!= PackageManager.PERMISSION_GRANTED){            ActivityCompat.requestPermissions(这一点,新的String [] {} android.Manifest.permission.ACCESS_COARSE_LOCATION,
                    MY_PERMISSION_ACCESS_COURSE_LOCATION);
        }
        如果(Build.VERSION.SDK_INT> = 23安培;&安培;
                ContextCompat.checkSelfPermission(背景下,android.Manifest.permission.ACCESS_FINE_LOCATION)= PackageManager.PERMISSION_GRANTED和放大器;!&安培;
                ContextCompat.checkSelfPermission(上下文,android.Manifest.permission.ACCESS_COARSE_LOCATION)!= PackageManager.PERMISSION_GRANTED){
            //返回0;
        }
        mLocationManager =(的LocationManager)getSystemService(Context.LOCATION_SERVICE); //这里是空指针
        //地点位置= mLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
        地点= mLocationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
        如果(!位置= NULL&放大器;&安培; location.getTime()> Calendar.getInstance()getTimeInMillis() - 2 * 60 * 1000){
            //做一些与最近的位置锁定
            //否则等待下面的更新
        }
        其他{
            //mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,这一点);
            mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,0,0,这一点);
        }
    }赶上(例外五){}
返回地球;}

//我用这个方法来获得数据:

 公共无效onLocationChanged(地点){
    如果(位置!= NULL){
        Log.v(位置发生改变,location.getLatitude()+和+ location.getLongitude());
        缘=+ location.getLatitude()+,+ location.getLongitude();
        mLocationManager.removeUpdates(本);
    }
}

这是Android的工作室错误异常:

  java.lang.IllegalStateException:之前的onCreate不向活动系统服务()

在哪里我叫getGeolocation()?

 公共类AlarmReceiverCustom扩展广播接收器{
    @覆盖
    公共无效的onReceive(上下文的背景下,意图意图){
getGeolocation(上下文)


解决方案

您正在给一个上下文 getGeolocation(),还是你打电话 getSystemService()对象本身。

您可能需要使用您传递的上下文:

  mLocationManager =(的LocationManager)context.getSystemService(Context.LOCATION_SERVICE);

但你必须要考虑的接收机和流程生命周期太:

So you better reimplement this part of your application and use a Service to update the location.

这篇关于checkSelfPermission空指针6.0的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-15 03:20