이상한 문제가 있습니다. 나는 누군가가 WiFi 엑세스 포인트에 연결할 때마다 트리거하기위한 아주 간단한 코드를 가지고있다.Android 뒤로 또는 홈 버튼을 누르면 연결이 변경됩니까?
IntentFilter ConnectedFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
getApplicationContext().registerReceiver(ConnectedToAPReceiver, ConnectedFilter);
private BroadcastReceiver ConnectedToAPReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent)
{
final String action = intent.getAction();
if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION))
{
ConnectivityManager connManager = (ConnectivityManager)getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo Wifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (Wifi.isConnected())
{
// If we get here, it means that the user has just connected to wifi.
}
}
}
};
이 코드는 내가 필요로하는 것을 위해 매우 잘 작동합니다. 그러나 나는 이상한 사건이 일어나고있다. 다시 또는 홈 버튼이 눌려지면 방송 수신기도 작동된다. 또한, 애플 리케이션을로드뿐만 아니라 이것을 트리거합니다.
왜이 버튼을 누르는 것이 Android에서 연결 변경을 일으키는 것으로 보입니까? 그리고 사람들은 이러한 버튼 누름과 유효한 연결 변경을 쉽게 구별하는 방법을 알고 있습니다.
일부 작업 덕분에 해결책의 일부입니다.
먼저 두 개의 클래스 인 activity 클래스와 service 클래스가 있습니다. 내 활동 클래스에서 onPause 및 onDestroy가 호출 될 때마다 브로드 캐스트 리시버를 사용하여 서비스 클래스에 변수를 설정합니다. (사용자가이 버튼을 누르면 트리거됩니다.) 서비스 클래스의 수신자는이 인 텐트를 선택하고 공용 변수를 설정합니다.
그런 다음 활동 클래스 onResume에서이 변수를 확인하고 서비스에 다른 인 텐트를 보내 변수를 기본 상태로 재설정합니다. 여기서 나는 또한 국기를 세웠다. 어떤 처리를하고있을 때 나는 미리 그 플래그를 체크하고 적절히 처리한다.
매우 정확한 코멘트 :
이 일부 주변의 문서는 당신이 당신이 뭔가를 할 필요가 있는지 여부를 결정하는 데 도움이 의도에 대해 검사 할 수있는 몇 가지 추가가 여기에 슈퍼 분명이 arent하지만. 나는 이것을 깨닫고 몇 가지 추가 검사를 추가했다. 누구든지이 문제에 관심이 있다면 어떻게 해결했는지에 대한 내 질문을 편집했습니다. – Dave