这个警告是由我的应用引起的吗? - “使用startService的隐式意图不安全”

时间:2014-02-26 19:04:28

标签: android android-intent warnings logcat android-logcat

我在开发时在Logcat中收到此警告。是由我的应用程序引起的吗?

  

16699-16699 / tld.me.myapp.debug W / ContextImpl:隐式意图   使用startService不安全:Intent {   ACT = 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

我无法在代码中看到我在哪里造成这种情况。

3 个答案:

答案 0 :(得分:9)

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

意图解决方案

您将使用两种主要形式的意图。

Explicit Intents指定了一个组件(通过setComponent(ComponentName)或setClass(Context,Class)),它提供了要运行的确切类。通常这些不包括任何其他信息,仅仅是应用程序在用户与应用程序交互时启动其具有的各种内部活动的方式。 隐含意图没有指定组件;相反,它们必须包含足够的信息以供系统确定哪个可用组件最适合该意图运行。 当使用隐式意图时,给定这样一个任意意图我们需要知道如何处理它。这由Intent解析过程处理,该过程将Intent映射到可以处理它的Activity,BroadcastReceiver或Service(有时是两个或多个活动/接收者)。

可能是明确提及该组件的说法。

答案 1 :(得分:1)

我遇到了完全相同的问题,似乎是在Google Play服务库中,他们错过了将android:exported="true"放入<service>声明中。

在Android 5.0之前,它允许使用隐式意图启动服务,但现在它不可能,而不是发出警告,你将有一个例外。

他们需要修理他们的东西。

答案 2 :(得分:0)

在您尝试访问的服务中设置过滤器时,必须将导出:“false”导出为“true”。如下:

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