intent.setAction() and intent.getAction() not working in BroadcastReceiver

拥有回忆 提交于 2019-12-11 02:21:42

问题


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

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