当我在 Android 设置中手动禁用位置时,为啥 Android 前台服务会停止?

Posted

技术标签:

【中文标题】当我在 Android 设置中手动禁用位置时,为啥 Android 前台服务会停止?【英文标题】:Why Android foreground service stops when I manually disable the location in Andriod settings?当我在 Android 设置中手动禁用位置时,为什么 Android 前台服务会停止? 【发布时间】:2022-01-12 06:31:09 【问题描述】:

我在我的应用程序中编写了一个前台服务,我每 5 分钟执行一次 API 操作。我的应用程序主要用于位置跟踪,它总是需要位置许可。如果用户不小心禁用了我的应用程序的位置,那么我只想从我的服务创建一个本地通知。我的应用程序用户大多不会将我的应用程序带到前台。所以我想检查是否启用了位置权限。如果没有,那么我只想显示一个通知,告诉用户该应用程序需要位置权限。现在我只是手动进入 android 设置并禁用了我的应用程序的位置权限。我的应用程序中有两个服务正在运行。突然两个人都停止了工作。我只想知道它停止的原因?在我启用权限之前,它会一直停止吗?我该怎么做才能让我的用户启用权限?由于我的应用程序总是在后台运行,我想在服务中处理它。请提出您的意见以解决我的问题。

【问题讨论】:

Service 崩溃后日志中应该有一些Exception 【参考方案1】:

NullPointerException:尝试从空对象引用上的字段“LanguageInitBean$Data LanguageInitBean.data”读取

更改存储权限后,无法读取内存中存储的数据

寻求帮助

public static class LanguageInitCache
    public static LanguageInitBean languageInitBean;

private void startToNext(String response) 
    languageInitBean = GsonUtils.json2Bean(response, LanguageInitBean.class);

【讨论】:

以上是关于当我在 Android 设置中手动禁用位置时,为啥 Android 前台服务会停止?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ARCore Android 中禁用表面检测

Android Jetpack 导航禁用滚动位置

为啥我在同一位置获得不同的 GPS 点

当我在我的 android 应用程序中从图库中加载图像时,为啥位图返回较小的图像?

为啥我的 iOS 应用没有禁用暗模式?

当我在android中按回为啥不退出应用程序?