Разрешение на IntentService с Eclair 2.1

Я пишу два приложения на Android, которые используют механизм разрешений для применения ограничений к вызывающему абоненту.

Они отлично работают на Froyo 2.2 или выше, но не на Eclair 2.1.

Первое приложение (вызывающее) имеет в манифесте <uses-permission ... />, а второе (вызываемое) определяет новое разрешение с помощью <permission .... />.

У кого-нибудь такая же беда с Eclair 2.1?

Я использую для тестирования только эмулятор 2.1 (2.1-update1 и 2.1update1 с google api).

Это ошибка из logcat:

W/ActivityManager(   52): Permission Denial: Accessing service ComponentInfo{xy.android.myapp.pkg2/xy.android.myapp.pkg2.Service} from pid=52, uid=1000 requires xy.android.myapp.ACCESS_SERVICE
W/System.err(  499): java.lang.SecurityException: Not allowed to start service Intent { act=xy.android.myapp.pkg2.REMOTE_LIST cmp=xy.android.myapp.pkg2/.Service (has extras) } without permission xy.android.myapp.ACCESS_SERVICE
W/System.err(  499): at android.app.ApplicationContext.startService(ApplicationContext.java:765)
W/System.err(  499): at android.content.ContextWrapper.startService(ContextWrapper.java:326)
W/System.err(  499): at xy.android.myapp.pkg1.MainActivity$6.run(MainActivity.java:711)
W/System.err(  499): at java.lang.Thread.run(Thread.java:1096)

Когда я устанавливаю apk, в отличие от Froyo, в журнале о новом разрешении нет.

Манифест приложений:

Pkg1 (вызывающий)

<uses-permission android:name="xy.android.myapp.ACCESS_SERVICE" />

Уп2

<permission android:name="xy.android.myapp.ACCESS_SERVICE"
            android:label="@string/label"
            android:description="@string/desc"
            android:protectionLevel="signature" />

И в определении службы:

<service ... android:permission="xy.android.myapp.ACCESS_SERVICE" ... />

Я тестировал со значением ProtectionLevel: нормальный, сигнатурный и опасный. Спасибо.


person mike    schedule 30.08.2011    source источник
comment
Пожалуйста, укажите более точные симптомы того, что вы испытываете.   -  person CommonsWare    schedule 30.08.2011


Ответы (1)


Я только что сам наткнулся на это. Приложение, которое объявляет разрешение, должно быть установлено до того, которое его использует, иначе оно выдаст исключение, даже если правильное разрешение отображается в настройках.

person sergio91pt    schedule 29.02.2012