Это предупреждение вызвано моим приложением? - "Неявные намерения с startService небезопасны"

Я получаю это предупреждение в Logcat во время разработки. Это вызвано моим приложением?

16699-16699/tld.me.myapp.debug W/ContextImpl: неявные намерения с startService небезопасны: Intent { акт = com.google.android.location.internal.GoogleLocationManagerService.START } android.content.ContextWrapper.bindService: 517 com.google.android.gms.internal.v.a: -1 com.google.android.gms.internal.u.connect: -1

Я не вижу, где я могу это сделать в своем коде.

Ответы

Ответ 1

http://developer.android.com/reference/android/content/Intent.html

Разрешение на выполнение

Существуют две основные формы намерений, которые вы будете использовать.

Явные намерения указали компонент (через setComponent (ComponentName) или setClass (Context, Class)), который предоставляет точный класс для запуска. Часто они не будут содержать никакой другой информации, просто являясь способом приложения для запуска различных внутренних действий, которые он имеет, когда пользователь взаимодействует с приложением. Неявные намерения не указали компонент; вместо этого они должны содержать достаточную информацию для системы, чтобы определить, какой из доступных компонентов лучше всего выполнить для этого намерения. При использовании неявных намерений, учитывая такое произвольное намерение, нам нужно знать, что с ним делать. Это обрабатывается процессом разрешения Intent, который отображает Intent для Activity, BroadcastReceiver или Service (или иногда двух или более операций/получателей), которые могут его обрабатывать.

Может быть, его высказывание явно упоминает компонент.

Ответ 2

Я столкнулся с одной и той же проблемой, и, похоже, в Библиотеке сервисов Google Play они пропустили размещение android:exported="true" в своем объявлении <service>.

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

Им нужно исправить свои вещи.

Ответ 3

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

<service
        android:name=".MyService"
        android:exported="true" >
        <intent-filter >
            <action android:name="com.pluralsight.intentrelatedstuffs.action.LOG_TIME"></action>
        </intent-filter>
    </service>