通过“android.intent.action.SEND”意图启动服务

时间:2011-08-31 17:12:22

标签: android service android-intent

我目前有一个具有以下intent-filter的Activity类:

        <intent-filter>
            <action android:name="android.intent.action.SEND"/>
            <category android:name="android.intent.category.LAUNCHER" />
            <data android:mimeType="image/*"></data>
        </intent-filter>

这会导致我的应用程序显示在Gallery的Share-Via菜单中。这一切都很好。

现在,我实际上并不需要将它作为Activity,因为它不需要用户交互。相反,我想将它变成一个由Gallery中的Share-Via菜单以相同方式启动的服务。所以我将intent-filter移到了“service”标签中,如:

    <service ...>
        <intent-filter>
            <action android:name="android.intent.action.SEND"/>
            <category android:name="android.intent.category.LAUNCHER" />
            <data android:mimeType="image/*"></data>
        </intent-filter>
      </service>

但是,现在我不再在Share-Via菜单中看到该应用了!这是为什么?如何更改以在Share-Via菜单中列出服务?

1 个答案:

答案 0 :(得分:5)

这是因为当用户点击“共享”菜单项时,Android会调用startActivity()方法。您可以创建透明活动并从中启动服务。