8

android.intent.action.SENDのいずれかでアクションを使用してインテントをフィルタリングおよび処理しようとしていますService。私は私の中に次のように書いたAndroidManifest.xml

<service 
    android:name=".app.ScreamerService"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.intent.action.SEND"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:mimeType="*/*"/>
    </intent-filter>                                                                    
</service>

ここでの問題は、たとえば、ブラウザーから Web ページを共有しようとしたり、連絡先リストから連絡先を共有しようとすると、「共有」オプションのリストにアプリケーションが表示されないことです。ただし、インテント フィルターを<activity>(の代わりに) メイン タグに移動する<service>と、アプリケーション名とアイコン「共有方法」オプションのリストに表示されます。

ここで何が間違っていますか?SENDアクションをサービスに向けることはできませんか?

4

2 に答える 2

10

サービスの 1 つで android.intent.action.SEND アクションを使用してインテントをフィルタリングして処理しようとしています。

ACTION_SENDはアクティビティ アクションであるため、サービスやブロードキャスト レシーバーで取得することはできません。

さて、問題は、たとえば、次の場合に、「共有」オプションのリストに自分のアプリケーションが表示されないことです。

それは活動ではないからです。

SEND アクションをサービスに向けることはできませんか?

セレクターに表示されるもの (例: for ACTION_SEND) はアクティビティでなければなりません。ただし、アクティビティはサービスと通信することを歓迎します。

于 2012-06-18T15:05:15.957 に答える
1

これはうまくいくはずですが:

最初にブロードキャスト レシーバーを試して、インテントを取得し、サービスを起動します。

それがうまくいかない場合:

レイアウトのないダミー アクティビティを使用します。(テーマを半透明にし、インテントを処理した直後に呼び出しを終了します)。

また、MIME タイプは、すべてのファイル タイプを処理していることを意味します。それはあなたが必要とするものですか?より正確に選択する必要があると思います。サポートしていないタイプで誰かが使用しようとすると、否定的なフィードバックが返されます。私の提案は、タイプをテストし、それらを処理できると確信しているので、それらを 1 つずつ追加することです。

于 2012-06-18T14:45:11.050 に答える