Intereting Posts
Как я могу указать атрибут buildType sourceSets? Как я могу исправить стиль Spinner для Android 4.x, размещенный поверх панели инструментов Удалять полосу прокрутки из программы ScrollView программно в Android Android: поиск метода drawArc () с внутренним и внешним радиусом Как добавить tabhost в фрагменты Во время установки Cordova (PhoneGap) я получаю предупреждение, как «двигатель npm WARN Cordova-js @ 3. 8.0: хотел: … " Необычное исключение: нельзя использовать String для Boolean при использовании getBoolean Как изменить версию Java, используемую подпроектами cordova Как интегрировать paypal пожертвовать в Android-приложение? Есть ли способ загрузить и частично отрисовать растровое изображение из файла на Android? Android openGL ES glDrawArrays или glDrawElements? Как определить, является ли тип сети 2G, 3G или 4G Запретить новый экземпляр действия после нажатия на уведомление Вставить страницы в середине FragmentPageAdapter Что такое файл keycharmap? Почему я получаю сообщение «can not open keycharmap file»?

Экспортированная служба не требует разрешения: что это значит?

Я создал службу, связанную с другими приложениями через AIDL, и добавлю ее в манифест следующим образом:

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

Где IService – это интерфейс AIDL.

Таким образом, Eclipse покажет мне, что для экспортированного сервиса не требуется разрешение . Если я удалю intent-filter , предупреждение исчезнет, ​​но очевидно, что приложения не могут привязываться к службе.

Что означает это предупреждение?

Solutions Collecting From Web of "Экспортированная служба не требует разрешения: что это значит?"

У меня была такая же проблема, когда я обновил 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> 

См. Этот документ

Если вы хотите ограничить использование своей активности вашим собственным приложением, вы должны добавить exported=false в оператор манифеста вашего действия.

Если вы хотите разрешить другим приложениям использовать его (явно через его имя класса или, лучше, используя намерение с типом данных или действием), у вас есть два варианта:

  • Ограничивать эти приложения с помощью разрешения
  • Разрешить всем приложениям использовать его, тогда вы можете добавить tools:ignore="ExportedActivity" в оператор манифеста вашей активности.

То же рассуждение относится к сервису с tools:ignore="ExportedService" и поставщиками контента с tools:ignore="ExportedContentProvider" .

Как сказал Йенс : «Это означает, что другие (произвольные) приложения, которые пользователь имеет на своем телефоне, могут связываться с вашей службой и вызывать любой способ, который им нравится, который открывается через ваш интерфейс AIDL».