2012-06-10 4 views

답변

1

전화 백그라운드 서비스 (예 : AlermManager Service)를 통해 인터넷 연결을 확인한 다음 연결이 없으면 응용 프로그램을 닫습니다.

감사합니다.

1
close the app 

응용 프로그램을 닫는 프로세스와 권장되지 않는 방법을 죽이지 마십시오. 모든 액티비티에 대해 finish()를 호출하거나 moveTaskToBack (true)를 호출하십시오.

해결책 여기 있습니다.

당신은 브로드 캐스트 리시버를 등록하고 처리해야합니다

android.net.conn.CONNECTIVITY_CHANGE

1 단계

포함 매니페스트

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

의 허가를 2 단계

안드로이드 KNO하자 다음 w 클래스가 BroadCast Receiver에 등록됩니다.

<receiver android:name="ConnectivityReceiver_package_name.ConnectivityReceiver"> 
    <intent-filter> 
     <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
    </intent-filter> 
</receiver> 

3 단계

다양한 네트워크 상태에 대한 당신의 논리를 넣습니다. 내가 닫을 때

public class ConnectivityReceiver extends BroadcastReceiver { 

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

    String action = intent.getAction(); 

    boolean noConnectivity = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY,false); 

    if(noConnectivity){ 

     //Show Warning Message 
     //Close Application the way i suggested 
    } 

    } 

} 
+0

내가하지만에게 나던 작업을 시도하거나 인터넷 연결을 엽니 다. 내가 "action"변수로 무언가를해야합니까? 사용하지 않는 것 같습니다. –

+0

if (noConnectivity) {} 블록에 일부 로그를 넣고 인터넷 연결을 끊으면 제어가 블록으로 도달했는지 확인하십시오. –

+0

내부 클래스 또는 이와 비슷한 다른 클래스에 ConnectivityReceiver를 넣어야합니까? 왜냐하면 나는 모든 걸음을 밟았지만 나에게는 효과가 없었기 때문이다. –

관련 문제