权限拒绝:从 pid=-1 访问服务 ComponentInfo {...}

2024-01-05

我正在尝试使用 Google 的活动识别服务。几天前,一切都很顺利,即我可以使用该服务连接来获取活动信息。但今天我发现我再也收不到了。查看日志后发现这个错误:

 05-15 21:19:27.196: W/ActivityManager(765): Permission Denial: Accessing service
 ComponentInfo{edu.umich.si.inteco.captureprobe/edu.umich.si.inteco.captureprobe.
 contextmanager.ActivityRecognitionService} from pid=-1, uid=10220 that is not exported   
 from uid 10223

我重新启动了手机,然后它又工作了。然而,当我重新安装该应用程序后,同样的问题又出现了。谁能指出“真正的”问题是什么?它与“pid=-1”有关吗?我确实拥有清单文件中的权限

<uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION"/>

我在谷歌上寻找答案,但大多数问题是他们没有在清单文件中放置权限。在我看来这只是一个不同的问题......有人可以帮助我吗?谢谢!

更新: 该问题始终可以通过重新启动手机来解决。但是,当我卸载该应用程序并通过 Eclipse 重新安装时,它总是会重新出现。一种一致但奇怪的模式(至少对我来说)。我想知道手机是否会记住该应用程序并在我卸载它后阻止它访问 Google Play 服务(或者由于某种原因 Google Play 服务不允许我的应用程序访问它)。有任何想法吗?


我想出了解决办法。原因是由于两件事的结合:

  1. 重新安装生成同一应用程序的新的不同 uid(注意,重新安装是指从手机中卸载应用程序,然后使用 Eclipse 重新安装)。

  2. 默认情况下,在服务标签中,“exported”的值为 false,如所述here http://developer.android.com/guide/topics/manifest/service-element.html#prmsn

其他应用程序的组件是否可以调用该服务或与其交互 - 如果可以,则为“true”,如果不能,则为“false”。当值为“false”时,只有同一应用程序的组件或具有相同用户 ID 的应用程序才能启动该服务或绑定到该服务。 默认值取决于服务是否包含意图过滤器。没有任何过滤器意味着只能通过指定其确切的类名来调用它。这意味着该服务仅供应用程序内部使用(因为其他人不知道类名)。所以在这种情况下,默认值为“false”。另一方面,至少一个过滤器的存在意味着该服务旨在供外部使用,因此默认值为“true”。

所以我只需将标志设置为“true”就解决了我的问题。 (Google Activity Recognition 的示例代码使用值“false”而不是“true”。)

     <service
        android:name="edu.umich.si.inteco.captureprobe.contextmanager.ActivityRecognitionService"
        android:enabled="true"
        android:exported="true"
        >
    </service>

有趣的是,相同的代码可以在 Android 4.3 或更低版本上运行。我在四部不同Android版本的手机上测试了我的代码,卸载/重新安装问题仅出现在Android 4.4的手机上。这就是为什么我一直对这个问题感到困惑。为什么以前没有发生过?无论如何,如果您遇到同样的问题(即同一应用程序在重新安装后无法使用服务),请检查“导出”标志。

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

权限拒绝:从 pid=-1 访问服务 ComponentInfo {...} 的相关文章

随机推荐

  • R:如果加载插入符号包,set.seed() 结果不匹配

    我在用createFolds 在 R 版本 3 3 0 中创建训练 测试分区 为了使结果可重复 我使用了set seed 种子值为 10 正如预期的那样 结果 生成的折叠 是可重复的 但是一旦我在设置种子后加载插入符号包 然后使用creat
  • 将对象实例写入 C# 的工具(用于单元测试)

    假设我有一个接受对象列表的方法 该方法通常可以轻松处理 20 个对象 每个对象都有大约 15 个属性 为了对此进行单元测试 我需要输入所有 20 个对象 以便可以将它们传递到我的方法中 当我可以在调试器监视窗口中看到我需要的完美示例时 这真
  • 加载共享库时出错,无法打开共享对象文件:没有这样的文件或目录(hiredis)

    我正处于编写一个在后端使用 redis 的 C 程序的 alpha 阶段 我尝试过构建 安装hiredis make sudo make install 并运行测试 大部分通过 但是当尝试构建示例 c https github com re
  • Laravel 护照范围

    我对 laravel 范围部分有点困惑 我有一个用户模型和表 如何为用户分配用户 客户和 或管理员的角色 我有一个带有 vue 和 laravel api 后端的 SPA 我用https laravel com docs 5 3 passp
  • Android 版 Canvas 中的撤消和重做

    我正在使用定制版本指甲油 http developer android com resources samples ApiDemos src com example android apis graphics FingerPaint htm
  • 如何在 ASP.net core 中按请求缓存

    我的旧代码如下所示 public static class DbHelper One conection per request public static Database CurrentDb if HttpContext Current
  • JavaScript 中的变量有多昂贵?

    局部变量有多昂贵 var v 全局变量 window v 和跨全局变量 parent v 在 JavaScript 中 在主要浏览器中 有人对此进行过良好的测试吗 忽略解释器 解析器的优缺点 重要的是运行时必须查看作用域链的各个部分的程度
  • 带钩子的应用程序加载启动画面

    在使用带钩子的功能组件时 如何实现加载资源的同时显示闪屏 使用带有钩子的应用程序加载和 或启动屏幕的模式是什么 Thanks Bill 如果你只明白Hook s useState 这是一个非常容易的改变 这可以简单地转换为函数 并使用以下方
  • 如何设计协议缓冲区中未来的附加枚举值?

    Protocol buffers 的吸引人的功能之一是它允许您扩展消息定义 而不会破坏使用旧定义的代码 对于枚举的情况根据文档 https developers google com protocol buffers docs proto
  • Windows 中的网络文件传输

    我想使用 C 或 C 通过网络传输文件 我应该查找哪些主题 我怎样才能做到这一点 您应该从选择协议开始 HTTPS http en wikipedia org wiki HTTPS and SFTP http en wikipedia or
  • Java ArrayList / String / 原子变量读取线程安全吗?

    我一直在思考和阅读 但可以找到绝对权威的答案 我有几个由包含 ArrayList 字符串和原始值的对象组成的深层数据结构 我可以保证这些结构中的数据不会改变 没有线程会对列表进行结构更改 更改引用 更改原语 我想知道读取这些结构中的数据是否
  • IOError:设备上没有剩余空间 - 哪个设备?

    我正在将一个小文件 8 5 Mb 上传到 Flask 测试服务器 文件上传完成后 服务器报告 File home ubuntu virtualenvs eco app lib python2 7 site packages wtforms
  • Angular2 rxjs http.request.catch 对于某些 http 错误有奇怪的行为

    我的 http 服务无法正确捕获一些 http 错误 catch 方法有 2 个不同的响应对象 见下文 private fireRequest request Request Observable
  • Shmem vs tmpfs vs mmap [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • ASP.NET MVC 脚本包未呈现

    我已将以下行包含在BundleConfig cs file bundles Add new ScriptBundle bundles jqueryajax Include Scripts jquery unobtrusive ajax mi
  • Firestore如何从另一个集合文档id引用中获取集合值

    I have two fire store collection with following reference image I want to get the firstName and title Here signup id is
  • C 中使用 enum 和 int 变量的区别

    有什么区别 enum week Mon Tue Wed Thur Fri Sat Sun enum week day Wed and enum week Mon Tue Wed Thur Fri Sat Sun int day Wed in
  • for 循环中的 Swift async/await

    我对 WWDC 2021 上宣布的 Swift 5 5 中新的异步 等待模式感到摸不着头脑 似乎涉及到很多学习内容 但并不像想象的那么容易掌握 我刚刚在 WWDC 视频中看到了这个 for 循环 for await id in static
  • 列出所有没有远程的本地分支

    问题 我想要一种删除所有没有远程的本地分支的方法 将分支名称通过管道传输到git branch D branch name 但是我首先如何获得该列表呢 例如 我创建一个没有遥控器的新分支 git co b no upstream 我列出了所
  • 权限拒绝:从 pid=-1 访问服务 ComponentInfo {...}

    我正在尝试使用 Google 的活动识别服务 几天前 一切都很顺利 即我可以使用该服务连接来获取活动信息 但今天我发现我再也收不到了 查看日志后发现这个错误 05 15 21 19 27 196 W ActivityManager 765