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.

编辑:

如果您在服役,运行 getSystemServiceonCreate()

您需要以某种方式扩展 Activity class,您将在其中使用 getSystemService 方法