Android 从服务上下文获取 LocationManager 时出现 NullPointerException
Android NullPointerException when getting LocationManager from service context
我得到:
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
为空。)
我检查过:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
并调试:
context={MyService@830033501600}
有什么想法吗?
看来您必须使用 Activity 上下文来获取位置管理器。
您的 context
是应用程序上下文吗?尝试将其更改为 Activity.
编辑:
如果您在服役,运行 getSystemService
在 onCreate()
您需要以某种方式扩展 Activity class,您将在其中使用 getSystemService 方法
我得到:
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
为空。)
我检查过:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
并调试:
context={MyService@830033501600}
有什么想法吗?
看来您必须使用 Activity 上下文来获取位置管理器。
您的 context
是应用程序上下文吗?尝试将其更改为 Activity.
编辑:
如果您在服役,运行 getSystemService
在 onCreate()
您需要以某种方式扩展 Activity class,您将在其中使用 getSystemService 方法