Android 跨进程启动Service无效

Android 跨进程启动Service无效,第1张

在一个应用中可能需要用到其他应用提供的服务,这时可以使用隐式的方式启动服务,但是对于不同的Android版本,隐式启动的方式也略有限制

介绍两种隐式启动Service的方法

方法一:

Intent intent = new Intent();
ComponentName componentName = new ComponentName("com.example", "com.example.TestService");
intent.setComponent(componentName);
startService(intent); 或 bindService(intent, connection, BIND_AUTO_CREATE)

这种方法,Android 11 也可以正常启动

方法二:

Intent callService = new Intent();
callService.setPackage("com.example.test");
callService.setAction("com.example.test.RemoteService");
bindService(callService, serviceConnection, BIND_AUTO_CREATE); 或 startService(callService);

这种方法在Android 10(包含)之前是可以正常的启动或绑定Service的,但是如果Android版本>=11的话,使用这种方式无法正确启动Service,而且没有任何报错信息!(麻了)

在Android 11及以上的版本想使用这种方式启动的话,需要在提供服务的一方的清单文件中添加:


   

如此方法二在Android11也可以正常运行。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/992359.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存