2012-05-03 92 views
1

她就是我試圖完成:BroadcastReceiver with intent-filter for them?

  1. 當用戶試圖分享任何應用中的一些文字(例如分享鳴叫或鏈接),我的應用程序將出現在共享列表。
  2. 如果他選擇我的應用程序,將運行一些簡單的代碼(如顯示Toast),就是這樣。不需要界面或UI。

這是我如何做的:

AndroidManifest.xml中

<receiver 
android:name=".MyBroadcastReceiver" > 
    <intent-filter 
     android:label="select my app"> 
     <action android:name="android.intent.action.SEND" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     <data android:mimeType="text/plain" /> 
    </intent-filter>     
</receiver> 

MyBroadcastReceiver.java

public void onReceive(Context arg0, Intent arg1) { 
    // TODO Auto-generated method stub 
    //Some simple code 
    Toast.makeText(arg0, "My Receiver is cool", Toast.LENGTH_LONG).show(); 
} 

這沒有工作,我的應用程序沒有按不會顯示在共享列表中。

爲什麼我使用BroadcatReceivers而不是Activities因爲我不想要任何用戶界面,我認爲這就是爲什麼我們有接收器(糾正我的PLZ)

我做對了嗎?

回答

8

這不起作用,我的應用程序不顯示在共享列表中。

ACTION_SEND與活動一起使用。您正在嘗試使用BroadcastReceiver。由於BroadcastReceiver不是一項活動,因此這不起作用。

我在做對吧?

如果他選擇我的應用程序,一些簡單的代碼將運行(如顯示乾杯),那麼就是這樣。不需要界面或UI。

你還需要一個活動。但是,如果您提供活動Theme.NoDisplay,而您沒有撥打setContentView(),則該活動將不會有用戶界面。通常情況下,您只需要做任何你想做的事情就可以從onCreate()撥打finish()(在這種情況下,顯示Toast)。

例如,this sample application展示活動(FauxSender)成立的目的正是你想要的東西:一個Toast迴應ACTION_SEND。它有另一項活動發佈ACTION_SEND,以便您可以查看結果。

+0

問題解決。謝謝 ! – iTurki