Reputation: 8320
I created a service that is bound by other applications through AIDL, and I add it to the manifest as follows:
<service android:name=".MyService">
<intent-filter>
<action android:name="org.example.android.myservicedemo.IService" />
</intent-filter>
</service>
where IService is the AIDL interface.
In this way, Eclipse show me the warning Exported service does not require permission. If I remove the intent-filter
, the warning disappear, but obviously the applications are unable to bind to the service.
What does this warning mean?
Upvotes: 161
Views: 68722
Reputation: 5725
I had the same issue when I updated SDK to version 20. I removed it adding android:exported property android:exported="false"
like so:
<service android:name=".MyService"
android:exported="false">
<intent-filter>
<action android:name="org.example.android.myservicedemo.IService" />
</intent-filter>
</service>
See this doc
Upvotes: 136
Reputation: 38168
If you want to restrict you activity usage to your own application, then you should add exported=false
to your activity's manifest statement.
If you want to allow other applications to use it (explicitly through its class name or, better, by using an intent with a data type or action) then you have two choices :
tools:ignore="ExportedActivity"
to your activity's manifest statement.--
Same reasonning applies to a service, with tools:ignore="ExportedService"
and content providers with tools:ignore="ExportedContentProvider"
.
Upvotes: 65