问题
I am using BroadCaastReceiver to allow user perform offline events.The issue is that it is never going insideintent.getAction().equals("beenthereclicked")
if i try switching on wifi few seconds after clicking on beenThereView.However it does go inside if (wifi.isAvailable() || mobile.isAvailable())
whenever i switch on wifi.I failed to understand why intent.setAction()
and intent.getAction()
not working.I can see wificonnected
in my log but can't see beenthereclicked
in my log.
i wrote this inside onReceive- Log.e("NetworkChangeReceiver","intent"+intent.getAction());
.. then i am getting.. intentandroid.net.conn.CONNECTIVITY_CHANGE
in log
beenThereView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
Bundle extras = new Bundle();
extras.putString("Is_been_there", video.getIs_been_there());
extras.putString("videoid", video.getId());
intent.putExtras(extras);
intent.setAction("beenthereclicked");
mContext.sendBroadcast(intent);
}
}
NetworkChangeReceiver.java
public class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent intent) {
if (wifi.isConnected() || mobile.isAvailable())
{
Log.e("NetworkChangeReceiver", "wificonnected");
Log.e("NetworkChangeReceiver","intent"+intent.getAction());//returns android.net.conn.CONNECTIVITY_CHANGE
if (intent.getAction().equals("beenthereclicked")) {
Log.e("NetworkChangeReceiver", "beenthereclicked");
Bundle extras = intent.getExtras();
String isbeenthere = extras.getString("Is_been_there");
String videoid = extras.getString("videoid");
if (isbeenthere.equals("false"))
{
BeenThereAPI.unlike(context, videoid, new APIResponseListener() {
@Override
public void onResponse(Object response) {
}
@Override
public void onError(VolleyError error) {
}
});
}
else
{
BeenThereAPI.like(context, videoid, new APIResponseListener()
{
@Override
public void onResponse(Object response)
{
}
@Override
public void onError(VolleyError error)
{
}
});
}
}
}
AndroidManifest
<receiver android:name="xyz.NetworkChangeReceiver" android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE"></action>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
<action android:name="android.net.wifi.WIFI_STATE_CHANGED"/>
<action android:name="beenthereclicked"></action>
<action android:name="mustgoclicked"></action>
<action android:name="commentposted"></action>
</intent-filter>
</receiver>
来源:https://stackoverflow.com/questions/29061524/intent-setaction-and-intent-getaction-not-working-in-broadcastreceiver