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

use*_*453 3 service android 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>
Run Code Online (Sandbox Code Playgroud)

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

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

    <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>
Run Code Online (Sandbox Code Playgroud)

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

Mic*_*ael 5

那是因为Android startActivity()在用户点击"共享"菜单项时调用方法.您可以创建透明活动并从中启动服务.