BroadcastReceiver with intent-filter for them?

一笑奈何 提交于 2019-12-01 12:02:46

问题


Her is what I'm trying to accomplish:

  1. When user tries to share some text from any app (Like sharing a tweet or a link), my app will appear in the sharing list.
  2. If he select my app, some simple code will be run (like showing a Toast) then that's it. No interface or UI is needed.

Here is how I did it:

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();
}

This didn't work, my app doesn't show in the sharing list.

Why I work with BroadcatReceivers and not with Activities? Because I don't want any UI and I think that is why we have receivers (correct my plz)

Am I doing it right?


回答1:


This didn't work, my app doesn't show in the sharing list.

ACTION_SEND is used with activities. You are attempting to use a BroadcastReceiver. Since a BroadcastReceiver is not an activity, this will not work.

Am I doing it right?

No.

If he select my app, some simple code will be run (like showing a Toast) then that's it. No interface or UI is needed.

You still need an activity. However, if you give the activity Theme.NoDisplay, and you do not call setContentView(), there will be no UI for the activity. Usually, you just call finish() from onCreate() after doing whatever it is you wanted to do (in this case, display a Toast).

For example, this sample application shows an activity (FauxSender) set up to do precisely what you want: respond to ACTION_SEND with a Toast. It has another activity that issues an ACTION_SEND so you can see the results.



来源:https://stackoverflow.com/questions/10439927/broadcastreceiver-with-intent-filter-for-them

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!