Java 从服务上下文获取LocationManager时出现Android NullPointerException
我得到:Java 从服务上下文获取LocationManager时出现Android NullPointerException,java,android,nullpointerexception,locationmanager,Java,Android,Nullpointerexception,Locationmanager,我得到: Caused by: java.lang.NullPointerException at android.content.ContextWrapper.getSystemService(ContextWrapper.java:423) 当应用程序启动时: locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); 引发异常的代码是: 421:
Caused by: java.lang.NullPointerException
at android.content.ContextWrapper.getSystemService(ContextWrapper.java:423)
当应用程序启动时:
locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
引发异常的代码是:
421: @Override
422: public void grantUriPermission(String toPackage, Uri uri, int modeFlags) {
423: mBase.grantUriPermission(toPackage, uri, modeFlags);
424: }
(调试器在调用中将mBase
显示为null。)
我查过:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
有什么想法吗?似乎您必须使用活动上下文来获取位置管理器 您的
上下文
是应用程序上下文吗?尝试将其更改为活动
编辑:
如果您在服务中,请在
onCreate()
中运行getSystemService
,不知何故,您需要扩展活动类,在其中使用getSystemService方法检查上下文=null
thencontext.getSystemService(context.LOCATION\u服务)代码>放置服务类代码否,我的上下文是一个扩展服务的类
。如何从启动接收器启动的长时间运行的服务中获取应用程序上下文?您是否在构造函数中调用它?您应该在onCreate()中调用该命令,谢谢,问题是我是从服务中的参数初始化器(间接)调用它的。从服务的onCreate()
调用它(间接)修复了这个问题。
context={MyService@830033501600}