SecurityException:不允许启动服务

2023-12-28

在我们的应用程序中,我们有一个Service以这种方式定义

<service
    android:name="ServiceName"
    android:exported="false" />

When Activity's onCreate()被调用,应用程序启动这个Service。一切都很好,直到它被移到后台很长一段时间。将应用程序移至前台后onCreate()再次被调用,应用程序尝试启动Service但出现错误:

引起原因:java.lang.SecurityException:未经许可不允许启动服务 Intent { act=action_name cmp=app_bundle/service_name } 未从 uid 10156 导出

应用程序崩溃,重新启动后一切又恢复正常。我真的不明白出了什么问题。好像Activity是从新开始的uid,但尝试与Service从另一个进程与另一个进程uid (????).

崩溃仅重现于Asus phone, Android 6.0.0.


好像Activity是从新开始的uid,但尝试与Service从另一个进程与另一个进程uid (????)

我相信你已经回答了自己的问题。

一切都很好,直到它被移到后台很长一段时间。

在此期间“很久”您的应用程序的进程(与uid10XXX 已分配)启动了Service本来就有可能被系统干掉的。你的Service可能回来了START_STICKY或来自其的类似标志onStartCommand(),所以当应用程序进程被杀死时Service在一个新的流程中开始,和另外一个uid分配的由系统。

然后,当您将应用程序带回到前台时,它会在一个全新的进程中运行(意味着与另一个进程一起运行)uid由系统分配)。其中之一内Activity's onCreate()你开始Service具有android:exported="false"并且,因为这次它是从另一个内部调用的uid, a SecurityException被抛出(这种行为可能仅是您的华硕手机特定的 - 我建议检查其他供应商的手机的行为).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SecurityException:不允许启动服务 的相关文章

随机推荐

  • PySimpleGui:如何在文本框中输入文本?

    我正在通过参考教程来学习 PySimpleGui Link 1 https pysimplegui readthedocs io en latest tutorial and Link 2 https pysimplegui readthe
  • collectionView cellForItemAt 未被调用

    我有一个UITableView其中每个原型电池都有一个UICollectionView在里面 该集合视图应该是图像网格 我对 Swift 很陌生 已经在 google 上搜索了几个小时 并阅读了大量 StackOverflow 文章 但似乎
  • 枚举拳击和平等

    为什么这会返回 False public enum Directions Up Down Left Right static void Main string args bool matches IsOneOf Directions Rig
  • 如何使用 jQuery 解开所有父项?

    p span a href link a span p 我该如何打开一切 只留下 a href link a edit 抱歉 我应该提供更多信息 基本上 我试图瞄准所有a那是唯一的孩子span的周围是p标签 我希望以下内容能够解决问题 但它
  • BaseX REST API:设置自定义 HTTP 响应标头

    我想将以下 HTTP 标头包含到所有响应中BaseX REST API http docs basex org wiki REST Access Control Allow Origin 这可能吗 BaseX 在底层使用 Jetty 您可以
  • 如何向 java.sql.date 添加天数?

    这是我的程序 我尝试过 java sql Date logicalDate Calendar c Calendar getInstance c setTime logicalDate c add Calendar DATE 1 下面的行显示
  • Cakephp - 使用身份验证时在控制器中获取用户 ID

    这似乎是一个两步的过程 u this gt Auth gt user uid u User id 用户登录后是否会在某处设置变量 您可以使用 uid this gt Auth gt user id 查看api文档 https api cak
  • 如何测试两个移动的二维边界框的碰撞?

    OBB 具有位置 x y 速度 x y 和方向 矩阵 在定期更新的情况下 OBB 必须相互碰撞 返回被认为成功的移动部分 我查看了 GPWiki 上的多边形测试 http gpwiki org index php Polygon Colli
  • GWT 和 OSGi 集成问题

    我在将 GWT 集成到 OSGi Equinox 容器中时遇到问题 入口点网页运行 我看到我的第一页 但是 当我点击按钮实现服务器调用时 它没有运行 我使用 Firefox 并且有 firebug 然后 当我看到网络字段时 我收到下一条消息
  • 在 python-fastApi 中间件中引发异常

    我正在尝试验证 fastapi 中间件中的令牌 但这似乎不可能 我认为中间件需要进行下一次调用 尽管这不是必需的 我无法在这个 python fastapi 后端找到任何好的解决方案来一次性处理令牌 任何帮助表示赞赏 app middlew
  • 没有自动提交的 Git 合并

    是否可以做一个git merge 但没有提交 man git merge 是这样说的 With no commit perform the merge but pretend the merge failed and do not auto
  • NSOperationQueue 随机暂停?

    我有一个大量使用 NSOperationQueue 的应用程序 有时我注意到一些 NSOperationQueues 会 锁定 或随机进入 isSuspished 状态 即使我的代码从未调用 setSuspished 方法 这是不可能复制的
  • 构建向导的好模式?

    我通常使用一个TabControl并以某种方式隐藏选项卡并浏览它们 我很好奇这样做的其他方法 你可以使用一个集合Panel http msdn microsoft com en us library system windows contr
  • 如何手动更改 ggplot2 中图例中的关键标签

    我正在准备要出版的情节 我创建了一个堆积箱形图来显示每组中患有血清阴性病例复杂积累的患者与非血清阴性患者的频率 图例使用数据框中的标签 这些标签适合我们正在从事该项目的人 但不适合发布 我想将这些名称更改为读者更容易理解的名称 例如运行以下
  • 停止 HttpURLConnection 中的静默重试

    我在用着HttpURLConnection on 安卓奇巧将一些数据发布到服务器 服务器需要很长时间才能响应 并且连接在超时之前会静默重试 1 到 3 次 我不希望它重试 因为服务器会对所有请求执行操作 从而导致 Bad Things TM
  • Javascript滚动到div id [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 编辑问题以包括期望的行为 特定问题或错误以及重现问题所需的最短代码 help minimal reproducible example 这
  • Hystrix 仪表板始终显示加载屏幕

    我使用 Netflix OSS 库开发了微服务应用程序 我在 localhost 9091 hystrix 上运行的 Hystrix 仪表板上遇到问题 我想监控微服务A和微服务B之间的请求指标 端点 hystrix stream 已注册 h
  • 我得到了错误的客户端 IP 地址

    我正在运行 ASP NET 应用程序 Web 服务器位于同一系统上 在后面的代码中我只想获取请求客户端的IP地址 我正在使用这段代码 Request UserHostAddress 但我得到了一个错误的地址 127 0 0 1 我的系统IP
  • Rails own_to 关联(带有 :class_name)返回 nil

    我对 Rails 开发比较陌生 并且遇到了一个小的关联问题 我想将一个关联命名为与其所链接的模型不同的名称 我有以下2个型号 class User lt ActiveRecord Base has many events end class
  • SecurityException:不允许启动服务

    在我们的应用程序中 我们有一个Service以这种方式定义