我有一个名为com.example.library的库,其中包含一个名为com.example.library.http.RestService的服务。图书馆的清单包含以下元素:
<uses-permission android:name="com.example.library.permission.REST_PERMISSION" />
<permission
android:name="com.example.library.permission.REST_PERMISSION"
android:protectionLevel="signature" />
<application ...>
<service
android:name="com.example.library.http.RestService"
android:enabled="true"
android:permission="com.example.library.permission.REST_PERMISSION"
android:exported="true" >
<intent-filter>
<action android:name="com.example.library.LAUNCH_REST_SERVICE" />
</intent-filter>
</service>
</application>
我在名为com.example.testapp的应用中使用该库。 TestApp的清单重复与上面的库完全相同的元素。这在运行 4.0.3 的模拟器和运行 4.2.2 的nexus 4上运行良好,但是当我尝试在运行 2.3.5 ,它在尝试启动服务时失败,但有以下例外:
java.lang.SecurityException: Not allowed to start service Intent
{ act=com.example.library.LAUNCH_REST_SERVICE pkg=com.example.testapp (has extras) }
without permission com.example.library.permission.REST_PERMISSION
我正在使用以下代码启动该服务:
Intent intent = new Intent();
intent.setAction( "com.example.library.LAUNCH_REST_SERVICE" );
intent.setPackage( "com.example.testapp" );
[setting some extras]
startService( intent );
我一直在网上寻求帮助,并且已经阅读了我能找到的每一个相关的Stack Overflow问题,但是找不到任何我遗漏的东西。
答案 0 :(得分:0)
因此,在2.2和2.3仿真器上工作之后,我尝试重置Wildfire S的工厂。现在它工作正常。
我认为这类似于这个问题:Intent custom permission not working - 如果我重命名我的应用程序包,它可能也会工作。