How to determine the sender of Broadcast Intent

2019-01-27 23:26发布

问题:

I have an application that is at the same time a broadcast sender and receiver of standard action android.intent.action.SET_WALLPAPER. I want to do some stuff only in a case when another application broadcasted this intent.

Is there any way to determine who initiated a broadcast in onReceive method of a BroadcastReceiver?

回答1:

No.

If you only want to do something when an action was broadcast by another app (i.e. not yours), I imagine it should be easy to determine that your app didn't send this broadcast, and therefore it was someone else..



回答2:

If all you care about is if it was sent by your app or not, what you can do is add an extra to the Intent every time you create one. For example:

broadcastIntent.putExtra('com.android.app.EXTRA_APP_CREATED', true)

Then, when you receive the broadcast, you can check

if (intent.getExtra('com.android.app.EXTRA_APP_CREATED', false) { ... }

To see if you created the intent.