【问题标题】:BroadcastReceiver with intent-filter for them?带有意图过滤器的广播接收器?
【发布时间】:2012-05-03 22:01:52
【问题描述】:

她是我想要完成的:

  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 因为我不想要任何 UI,我认为这就是我们有接收器的原因(请纠正我的问题)

我做得对吗?

【问题讨论】:

    标签: android android-intent broadcastreceiver


    【解决方案1】:

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

    ACTION_SEND 用于活动。您正在尝试使用BroadcastReceiver。因为BroadcastReceiver 不是活动,所以这不起作用。

    我做得对吗?

    没有。

    如果他选择我的应用程序,将运行一些简单的代码(例如显示 Toast),仅此而已。不需要任何界面或 UI。

    你仍然需要一个活动。但是,如果您给活动Theme.NoDisplay,并且您不调用setContentView(),则该活动将没有UI。通常,您只需在完成您想做的任何事情后从onCreate() 调用finish()(在这种情况下,显示Toast)。

    例如,this sample application 显示一个活动 (FauxSender) 设置为精确执行您想要的操作:使用 Toast 回复 ACTION_SEND。它有另一个发出ACTION_SEND 的活动,因此您可以查看结果。

    【讨论】:

      猜你喜欢
      • 2016-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多