导出的服务不需要的权限:这是什么意思?(Exported service does not requ

2019-06-24 05:02发布

我创建了一个由其它应用程序通过AIDL结合的服务,我把它添加到清单如下:

<service android:name=".MyService">
    <intent-filter>
        <action android:name="org.example.android.myservicedemo.IService" />
    </intent-filter>
</service>

其中IService是AIDL接口。

通过这种方式,Eclipse的告诉我警告导出的服务并不需要许可 。 如果我删除intent-filter ,报警消失,但很明显的应用程序无法绑定到服务。

这是什么意思的警告?

Answer 1:

我有我的时候SDK更新到版本20相同的问题。 我删除其添加的android:出口属性android:exported="false" ,像这样:

<service android:name=".MyService"
    android:exported="false">
    <intent-filter>
        <action android:name="org.example.android.myservicedemo.IService" />
    </intent-filter>
</service>

看到这个文档



Answer 2:

如果你想使用的活动限制你自己的应用程序,那么你应该增加exported=false到您的活动的清单声明。

如果你想允许其他应用程序使用(明确地通过它的类名或更好,通过使用与数据类型或行动的意图),那么你有两种选择:

  • 通过使用许可限制的那些应用
  • 允许所有应用程序使用它,那么你可以添加tools:ignore="ExportedActivity"你的活动的清单声明。

-

同样reasonning适用于服务,用tools:ignore="ExportedService"和内容提供商与tools:ignore="ExportedContentProvider"



Answer 3:

正如延斯说,“这意味着其他(任意)应用程序的用户对自己的手机可以绑定到你的服务,并呼吁他们取悦任何方法是通过你的AIDL接口暴露出来。”



文章来源: Exported service does not require permission: what does it mean?