Подтвердить что ты не робот

Является ли андроид: exported = "true" действительно необходимым для службы проверки подлинности?

Обычно для реализации аутентификатора Android - службы аутентификации обычно используются две службы, которые возвращают аутентификатор, и службу синхронизации, которая предоставляет адаптер синхронизации. Этот вопрос касается службы аутентификации, хотя в большинстве примеров) обеим службам присваивается атрибут android:exported="true" в AndroidManifest.xml, например:

<service
    android:name=".authenticator.AuthenticationService"
    android:exported="true">
    <intent-filter>
        <action
            android:name="android.accounts.AccountAuthenticator" />
    </intent-filter>
    <meta-data
        android:name="android.accounts.AccountAuthenticator"
        android:resource="@xml/authenticator" />
</service>

Удаление атрибута из службы проверки подлинности, похоже, не имеет эффекта (проверено Froyo, Gingerbread) - код auth продолжает работать нормально - так ли нужен флаг?

4b9b3361

Ответ 1

Хорошо, чтобы ответить на это сам, прочитав документы, документация для атрибута exported говорит:

Значение по умолчанию зависит от того, содержит ли служба намерение фильтры. Отсутствие каких-либо фильтров означает, что оно может быть вызвано только указав точное имя класса. Это означает, что услуга предназначенные только для внутреннего использования приложения (поскольку другие не знать имя класса). Поэтому в этом случае значением по умолчанию является "false". С другой стороны, наличие по меньшей мере одного фильтра означает, что служба предназначена для внешнего использования, поэтому значение по умолчанию "Истинный".

У всех служб аутентификации есть фильтр намерений - документы для AbstractAccountAuthenticator говорят:

Чтобы стать аутентификатором, нужно... написать услугу, которая возвращает результат getIBinder() в службе onBind (android.content.Intent) при вызове с намерением с действием ACTION_AUTHENTICATOR_INTENT.

Для этого требуется фильтр намерений, поэтому значение по умолчанию для экспорта для службы true. Поэтому ответ на этот вопрос: "Нет, атрибут не необходим, потому что он по умолчанию по умолчанию".