gpt4 book ai didi

android - 安全异常 : Not allowed to start Service

转载 作者:行者123 更新时间:2023-11-30 00:06:19 25 4
gpt4 key购买 nike

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

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

ActivityonCreate() 被调用时,应用会启动此 Service。一切都很好,直到它被移到后台很长时间。将应用移到前台后,再次调用 onCreate(),应用尝试启动 Service 但出现错误:

Caused by: java.lang.SecurityException: Not allowed to start service Intent { act=action_name cmp=app_bundle/service_name } without permission not exported from uid 10156

应用程序崩溃,重启后一切正常。我真的不知道出了什么问题。看起来 Activity 是从新的 uid 开始的,但是尝试从另一个进程与另一个 uidService 交互( ????).

崩溃仅在 Asus 手机、Android 6.0.0 上重现。

最佳答案

Looks like Activity is started with new uid, but tries to interact with Service from another process with another uid (????)

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

And everything is fine, until it is moved to background for a long time.

“很长一段时间” 中,您的应用进程(分配了 uid 10XXX)首先启动了 Service 可能已被终止由系统。您的服务可能从其onStartCommand() 返回START_STICKY 或类似标志,因此当应用程序进程被终止时,服务 在一个新进程中启动,系统分配了另一个 uid

然后,当您将您的应用程序带回前台时,它会在一个全新的进程中运行(意味着使用系统分配的另一个 uid)。在 ActivityonCreate() 之一中,您启动具有 android:exported="false"Service并且,由于这次它是从另一个 uid 中调用的,因此会抛出一个 SecurityException(这种行为可能只是您的 Asus 手机特有的 - 我建议用其他供应商的手机检查行为)。

关于android - 安全异常 : Not allowed to start Service,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48930204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com