意图过滤器为他们广播接收器?(BroadcastReceiver with intent-filte

2019-06-24 04:18发布

她就是我要完成的:

  1. 当用户试图分享一些文本从任何应用程序(例如分享鸣叫或链接),我的应用程序将出现在共享列表。
  2. 如果他选择我的应用程序,一些简单的代码将运行(如显示干杯),那么就是这样。 无需接口或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)

我这样做对吗?

Answer 1:

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

ACTION_SEND使用与活动。 您正在尝试使用BroadcastReceiver 。 由于BroadcastReceiver是不活动,这是不行的。

我这样做对吗?

没有。

如果他选择我的应用程序,一些简单的代码将运行(如显示干杯),那么就是这样。 无需接口或UI。

你仍然需要一个活动。 但是,如果你给活动Theme.NoDisplay ,你不叫setContentView()将有活性无UI。 通常情况下,你只需要调用finish()onCreate()做什么是你想做的事之后(在这种情况下,显示Toast )。

例如, 该示例应用程序显示了一个活动( FauxSender )设立正是为了做你想要的:应对ACTION_SENDToast 。 它有另一个活动发出的ACTION_SEND这样你就可以看到结果。



文章来源: BroadcastReceiver with intent-filter for them?