我的用例很简单,我想创建一个启动服务的系统应用程序。(我对自定义ROM开发是新手)
为此,我添加了:我的AndroidManifest.xml中的android:sharedUserId="android.uid.system"
。到目前为止,我仍然在我的模拟器中使用官方的Android版本(这可能就是为什么我会遇到这个问题)
我开始我的服务:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) context.startForegroundService(service);
else context.startService(service);
不幸的是,服务没有启动,我得到以下错误:
Calling a method in the system process without a qualified user:
android.app.ContextImpl.startForegroundService:1466
android.content.ContextWrapper.startForegroundService:649
1条答案
按热度按时间b0zn9rqh1#
不直接使用
context.startForegroundService(service)
方法,可以使用ContextCompat.startForegroundService(context, service)
方法。此方法自动添加必要的用户上下文。通过使用ContextCompat.startForegroundService()
,系统应用程序应该能够在自定义ROM中成功启动前台服务。在
AndroidManifest.xml
中,确保系统应用程序具有必要的权限希望这能帮上忙。