用于检测我的Android应用程序用户是否在线的android代码

时间:2015-04-02 06:20:48

标签: android

我开发了一个Android应用程序,已经在谷歌播放中推出了它。它已经被很多人下载(大约200-300)。现在我的问题是我想知道我的用户是否在线。实际上我想在用户上线时在我的服务器中为该用户执行特定操作。我怎么知道用户在线并且当前正在查看我的应用程序屏幕?

我已经尝试过以下代码,只能说明设备是否具有互联网连接...

private boolean isOnline()
    {
        try
        {
            ConnectivityManager cm = (ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
            return cm.getActiveNetworkInfo().isConnectedOrConnecting(); 
        }
        catch (Exception e)
        {
            return false;
        }
    }

我如何知道我的用户现在是否正在查看我的应用屏幕?我希望有一个选项可用于此!

2 个答案:

答案 0 :(得分:2)

尝试在onResumeonPause方法中添加一些代码

@Override
public void onResume() {
    super.onResume();
    isOnline(true);
    }
}


@Override
public void onPause() {
    super.onPause();
    isOnline(false);
}

答案 1 :(得分:1)

实施广播接收器类,如下所示,每当互联网上线时发送广播:

public class InternetReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        boolean isConnected = new ConnectionDetector(context)
                .isConnectedToInternet();
        if (isConnected) {
            //user is connected 
        }
    }

public boolean isConnectedToInternet(){
        ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
          if (connectivity != null) 
          {
              NetworkInfo[] info = connectivity.getAllNetworkInfo();
              if (info != null) 
                  for (int i = 0; i < info.length; i++) 
                      if (info[i].getState() == NetworkInfo.State.CONNECTED)
                      {
                          return true;
                      }

          }
          return false;
    }
}

在Manifest中定义为:

<receiver android:name="com.example.InternetReceiver" >
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        </intent-filter>