BroadcastReceiver是否有针对它们的intent-filter?

iTu*_*rki 1 android broadcastreceiver android-intent

她就是我想要完成的事情:

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

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

这不起作用,我的应用程序没有显示在共享列表中.

为什么我合作BroadcatReceivers而不合作Activities因为我不想要任何UI,我认为这就是为什么我们有接收器(纠正我的PLZ)

我做得对吗?

Com*_*are 8

这不起作用,我的应用程序没有显示在共享列表中.

ACTION_SEND用于活动.您正在尝试使用BroadcastReceiver.由于a BroadcastReceiver不是活动,因此不起作用.

我做得对吗?

没有.

如果他选择我的应用程序,将运行一些简单的代码(如显示Toast)然后就是这样.不需要界面或UI.

你还需要一项活动.但是,如果您提供活动Theme.NoDisplay,而您没有打电话setContentView(),则活动将没有用户界面.通常情况下,你只需要调用finish()onCreate()后做什么是你想做的事(在这种情况下,显示器Toast).

例如,此示例应用程序显示一个activity(FauxSender)设置为准确地执行您想要的操作:ACTION_SEND使用a 响应Toast.它有另一个发布的活动,ACTION_SEND因此您可以看到结果.