독자적인 BroadcastReceiver를 작성할 수 있습니다. (자신의 CommunicationManager를 예를 들어) 연결의 변화를 수용하고 변화를 원하는 인스턴스를 알려줍니다 수신기 :
protected static void updateConnectivityState()
{
boolean isConnected = false;
if (_connec != null && (_connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED) ||(_connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED)){
isConnected = true;
Log.i(CommunicationManager.class.getName(), "Device is connected to the network. Online mode is available.");
}else if (_connec.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED || _connec.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED) {
isConnected = false;
Log.w(CommunicationManager.class.getName(), "Device is NOT connected to the network. Offline mode.");
}
_isConnected = isConnected;
}
: 연결 변경에 대한 알림을
여기에 예를 들어 당신의 CommunicationManager의 예를 들어
public class ConnectivityReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.i(getClass().getName(), "A change in network connectivity has occurred. Notifying communication manager for further action.");
NetworkInfo info = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
if(info != null) {
Log.v(getClass().getName(), "Reported connectivity status is " + info.getState() + ".");
}
CommunicationManager.updateConnectivityState(); // Notify connection manager
}
}
,
연결 가능성에 대한 자세한 내용은 NetworkInfo 클래스를 확인하십시오.
는 매니페스트에 ACCESS_NETWORK_STATE의 permisson를 등록하는 것을 잊지 마세요 :
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
도움이 되었기를 바랍니다. 그냥 안드로이드 소스에서 약간의 해킹 아래 서비스 상태 클래스의
public void onReceive(Context context, Intent intent) {
int state = intent.getExtras().getInt("state");
if(state == ServiceState.STATE_IN_SERVICE)
{
//Do whatever you want
}
}
체크 소스를 사용하여 수신기에 의도를 얻을 때 감사
이유 이거 downvoted? 어떤 아이디어? – cbrulak
아마도 ServiceState가 NetworkState가 아니기 때문일 수 있습니다. ServiceState는 전화 통신 라디오의 상태입니다. 반면 NetworkState는 데이터 연결 상태 (Wi-Fi, WiMAX ... 전화 통신 네트워크가 아님) –