2015-11-01 78 views
1

我希望用戶能夠共享/發送到我的應用程序,但我不想開始一項活動(我只需要在網絡上發送一些數據,並顯示彈出成功消息)。我想象的是使用廣播接收器來實現這一點,但是下面顯示的意圖過濾器雖然在正常活動時工作,但不適用於接收器(即我的應用程序未顯示在我可以共享的事物列表中)。用於在廣播接收器中進行SEND操作的意圖篩選器

<receiver 
     android:name=".MyReceiver" 
     android:enabled="true" 
     android:exported="true" > 
     <intent-filter> 
      <action android:name="android.intent.action.SEND" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <data android:mimeType="text/plain" /> 
     </intent-filter> 
    </receiver> 

我應該在這裏使用接收器,還是有其他方法來捕獲SEND意向而不啓動完整的活動?

回答

3

我的應用程序並不在事物的列表中顯示我可以分享到

正確的。這是因爲ACTION_SEND用於活動。啓動ACTION_SEND的人呼叫startActivity()。您無法通過Activity以外的任何其他方式迴應startActivity()請求。

是否有其他方式捕捉SEND意向而不啓動完整的活動?

不,您可以使用Theme.NoDisplay,Theme.Translucent.NoTitleBar或其他什麼來進行沒有UI的活動。請不要致電onCreate()中的setContentView(),而是請您做好工作(例如,啓動IntentService以完成您的網絡I/O),並致電finish()