android:exported
这个属性用于指示该服务是否可以被其余应用程序组件调用或跟它交互。若是设置为true,则可以被调用或交互,不然不能。设置为false时,只有同一个应用程序的组件或带有相同用户ID的应用程序才能启动或绑定该服务。
它的默认值依赖与该服务所包含的过滤器。没有过滤器则意味着该服务只能经过指定明确的类名来调用,这样就是说该服务只能在应用程序的内部使用(由于其余外部使用者不会知道该服务的类名),所以这种状况下,这个属性的默认值是false。另外一方面,若是至少包含了一个过滤器,则意味着该服务能够给外部的其余应用提供服务,所以默认值是true。
这个属性不是限制把服务暴露给其余应用程序的惟一方法。还能够使用权限来限制可以跟该服务交互的外部实体。java
在项目中,若是想使用systemUI.apk中的screenshot.TakeScreenshotService 进行截屏,那么须要把systemUI中的AndroidManifest.xml 的<service android:name=".screenshot.TakeScreenshotService">中添加android:exported="true"。那么其余应用app就能够去访问TakeScreenshotService 功能(函数)了。android
不然其余app访问systemUI的TakeScreenshotService 话,会报:app
Permission Denial: Accessing service ComponentInfo 函数
java.lang.SecurityException: Not allowed to bind to service Intentspa
这个错误xml