2013-07-26 2 views
1

Android 서비스에서 네트워크 연결 유형 변경을 캡처하고 이벤트가 발생하면이 서비스 코드를 실행하고 싶습니다. 별도의 클래스 없이도 Service 클래스 안에서 어떻게 수행 할 수 있습니까? 이 코드가 있지만 작동하지 않습니다. 당신이 당신의 AndroidManifest를Android 서비스에서 네트워크 연결 유형 모니터링 변경

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

에 브로드 캐스트 리시버를 등록해야하고 권한을 잊지 않도록

BroadcastReceiver networkStateReceiver = new BroadcastReceiver() { 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      playlist="NETWORK TYPE CHANGED"; 
     } 
    }; 

public void playSong(Context c, String url) { 

     try 
     { 

IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);   
      registerReceiver(networkStateReceiver, filter); 

답변

1

당신의 브로드 캐스트 리시버가 시스템에서 텐트를 수신 할 필요가

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

그것은 이상한하지만 그것은 그것없이 일하기 시작했다. 보시다시피, 클래스 파일이 아닌 동적 수신기입니다. 전에 귀하의 제안을 사용하려고했지만 서비스와 데이터를주고받는 문제가있었습니다. 그래서 나는 그것을 Service 클래스에서하기로 결정했다. 보통 Receiver의 이름은 클래스 파일 이름과 동일하지만 여기서는 즉시 작성됩니다. – Tramway11

+0

그래서 권한을 유지 한 것 같습니다. 네트워크 연결이 변경되면 수신자가 계속 살아 있습니까? – Christian

+0

처음에는 다른 용도로 이미 사용 권한이있었습니다. 나는 잘 모르겠다. – Tramway11