Skip to content

setSocket connection from BroadcastReceiver #400

Open
@Bekakk

Description

@Bekakk

Hi
I'm using socket.io android client.I wrote code and socket connection is perfect.I have one problem.I want to get connection from broadcast (when devise has start).This is my source

`public class AutoRunService extends BroadcastReceiver {
private static Socket socket;

@Override
public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
        Toast.makeText(UApplication.getInstance(), "Application is ready to open ", Toast.LENGTH_SHORT).show();
        seSocketConnection(context);

    }
}
public void seSocketConnection(final Context context) {
    try {
        IO.Options opts = new IO.Options();
        opts.forceNew = true;
        opts.reconnection = false;
        socket = IO.socket("http://192.168.101.139:8080",opts);
        socket.on("onconnect", new Emitter.Listener() {

                    @Override
                    public void call(Object... args) {
                        JSONObject obj = new JSONObject();
                        Log.e("AutoRunService", "onconnect");
                        try {
                            obj.put("host", "***********");
                            obj.put("entity", new DeviceManager(UApplication.getInstance()).getDeviceId());
                            socket.emit("initialize", obj);

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

                    }
                }
        ).on("onerror", new Emitter.Listener() {

                    @Override
                    public void call(Object... args) {
                        Log.e("AutoRunService", "onerror");


                    }
                }
        ).on("device", new Emitter.Listener() {

                    @Override
                    public void call(Object... args) {
                        Log.e("AutoRunService", "device");
                        Intent i = new Intent(context, WelcomeImageActivity.class);
                        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        context.startActivity(i);


                    }
                }
        ).on(Socket.EVENT_CONNECT_ERROR, new Emitter.Listener() {

            @Override
            public void call(Object... args) {
                Log.e("AutoRunService", "EVENT_CONNECT_ERROR");
            }


        }).on(Socket.EVENT_DISCONNECT, new Emitter.Listener() {

            @Override
            public void call(Object... args) {
              //  socket.disconnect();
                Log.e("AutoRunService", "EVENT_DISCONNECT");

            }

        });
        socket.connect();

    } catch (URISyntaxException e) {
        e.printStackTrace();
    }
}

`}

       <receiver
        android:name=".AutoRunService"
        android:enabled="true"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>`

I tested my app and socket connection is okey first time from Broadcast and after some second later socket disconnection and socket.io server stoped(node.js server)
I don;t know what is a wrong.if anyone knows solution please help me

p.s my socket connection working perfect in Activities .I have problem when i use BroadcastReceiver`

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions