1

她是我想要完成的:

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

我做对了吗?

4

1 回答 1

8

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

ACTION_SEND与活动一起使用。您正在尝试使用BroadcastReceiver. 由于 aBroadcastReceiver不是一个活动,这将不起作用。

我做对了吗?

不。

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

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

例如,此示例应用程序显示了一个活动 (),该活动 ( FauxSender) 设置为精确地执行您想要的操作:ACTION_SEND使用Toast. 它有另一个活动发出一个,ACTION_SEND所以你可以看到结果。

于 2012-05-03T22:29:21.083 回答