谨慎实现Intents
细节
Intents用于内部组件间通信,可以被用于
- 启动Activity,通常用于打开应用程序的用户界面
- 将变更通过广播通知系统和应用程序
- 启动/停止后台服务,以及与后台服务通信
- 通过ContentProviders访问数据
- 作为处理事件的回调
不正确的实现可能导致数据泄漏、受限功能被恶意调用或者程序流程被恶意操纵。
修复
通过Intents访问的组件可以是公共的或私有的。默认值取决于Intent过滤器。并且它非常容易错误地允许组件成为公共的。可以在应用程序清单中将组件设置为
android:exported = false来防止这种情况。在清单中声明的公共组件默认是开放的,所以任何应用程序都可以访问它们。如果组件不需要被其他应用程序访问,请考虑为清单中声明的组件设置权限。
公共组件收到的数据不能被信任,必须仔细检查。