《完美解决系列》Android5.0以上 Implicit intents with startService are not safe
【《完美解决系列》Android5.0以上 Implicit intents with startService are not safe】知识养成了思想,思想同时又在融化知识。这篇文章主要讲述《完美解决系列》Android5.0以上 Implicit intents with startService are not safe相关的知识,希望能为你提供帮助。
在android6.0上,使用了以下代码:
Intent intent = new Intent(); intent.setAction("xxx.server"); bindService(intent, mConn, Context.BIND_AUTO_CREATE);
提示了警告的异常:
Implicit intents with startService are not safe
查了一下源码,原来在5.0上就必须强制使用显示方式来启动Service。
private void validateServiceIntent(Intent service) { if (service.getComponent() == null & & service.getPackage() == null) { if (getApplicationInfo().targetSdkVersion > = Build.VERSION_CODES.LOLLIPOP) { IllegalArgumentException ex = new IllegalArgumentException( "Service Intent must be explicit: " + service); throw ex; } else { Log.w(TAG, "Implicit intents with startService are not safe: " + service + " " + Debug.getCallers(2, 3)); } } }
解决方法:设置Action的同时,还需要设置启动或绑定此Service类的packageName。
我们在此处使用系统的getPackageName函数来获取包名即可。
Intent intent = new Intent(); intent.setAction("xxx.server"); intent.setPackage(context.getPackageName()); bindService(intent, mConn, Context.BIND_AUTO_CREATE);
推荐阅读
- dispatch_apply的用法
- Kivy 中文教程 实例入门 简易画板 (Simple Paint App)(0. 项目简介 & 成果展示)
- Android Bug分析系列(第三方平台安装app启动后,home键回到桌面后点击app启动时会再次启动入口类bug的原因剖析)
- Android SDK下载和更新时遇到的问题&解决方法
- ssemble JavaBeans components into an application without having to write any code
- JavaNIO的深入研究4内存映射文件I/O,大文件读写操作,Java nio之MappedByteBuffer,高效文件/内存映射
- 卡西欧tr500怎样?卡西欧tr500设置评测
- 小霸王x28游戏机怎样?小霸王x28游戏机设置
- 小霸王x28游戏机价格多少钱?小霸王x28报价