나는 안드로이드에서 초보자입니다. 방송 수신자가 무엇인지 (가능한 한 예제가 있음) 알고 싶습니다. onReceive() 메소드가 있습니다. 인터넷 연결을 확인하기 위해 수신기를 사용하는 방법에 대해 설명합니다.브로드 캐스트 수신기가 인터넷 연결을 확인합니다.
인터넷 연결을 확인하거나 Main 클래스에서 정적 메서드를 만들고 다른 클래스에서 액세스하려면 동일한 메서드를 사용해야합니까?
나는 안드로이드에서 초보자입니다. 방송 수신자가 무엇인지 (가능한 한 예제가 있음) 알고 싶습니다. onReceive() 메소드가 있습니다. 인터넷 연결을 확인하기 위해 수신기를 사용하는 방법에 대해 설명합니다.브로드 캐스트 수신기가 인터넷 연결을 확인합니다.
인터넷 연결을 확인하거나 Main 클래스에서 정적 메서드를 만들고 다른 클래스에서 액세스하려면 동일한 메서드를 사용해야합니까?
그래, 내가 최고의 프로그래머가 아니지만이게 효과가있다.
이것은 조각을위한 것이지만 활동을 위해 쉽게 변경할 수 있습니다.
은 처음 3 개 변수를 만들 : 당신의에서 onCreate에서Context _mContext;
BroadcastReceiver br = null;
IntentFilter filter;
을()이 붙여 넣기 :이와
BroadcastReceiver br = new MyBroadCastReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
_mContext = getActivity().getApplicationContext()
_mContext.registerReceiver(br, filter);
을 사용하면 브로드 캐스트 리시버 클래스 MyBroadCastReceiver로 조각을 등록합니다.
이제 MyBroadCastReceiver 클래스를 만들고이 붙여 :
public class MyBroadCastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
int extraWifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,
WifiManager.WIFI_STATE_UNKNOWN);
switch(extraWifiState) {
case: WifiManager.WIFI_STATE_DISABLED:
//do something
break;
case WifiManager.WIFI_STATE_ENABLED:
//do something
break;
case: WifiManager.WIFI_STATE_ENABLING:
//do something
break;
case: WifiManager.WIFI_STATE_DISABLING:
//do something
break;
case: WifiManager.WIFI_STATE_UNKNOWN:
//do something with data if you desire so, I found it unreliable until now so i've done nothing with it
}
}
}`
이 당신의 조각에 돌아가서 하단에이 곳을 붙여 넣습니다
@Override
public void onPause() {
try {
if (br == null) {
Log.d("Receiver", "Can't unregister a receiver which was never registered");
} else {
getActivity().getApplicationContext().unregisterReceiver(br);
br = null;
}
} catch(Exception err) {
Log.e(err.getClass().getName(), err.getMessage(), err);
Log.e("Receiver not registered", "Couldn't get context");
}
super.onPause();
}
@Override
public void onResume() {
if(br != null) {
Log.d("Receiver", "Can't register receiver which already has been registered");
} else {
try {
br = new MyBroadCastReceiver();
filter = new IntentFilter();
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
filter.addAction(CONNECTIVITY_SERVICE);
_mContext = getActivity().getApplicationContext();
_mContext.registerReceiver(br, filter);
} catch(Exception err) {
Log.e(err.getClass().getName(), err.getMessage(), err);
}
}
super.onResume();
}
당신은 등록 호출 할 수 있어야한다 /를 등록을 취소 이처럼 어디서나 방송하십시오. 나는 희망이
<receiver
android:name=".InternetConnectorBroadcastReceiver"
android:enabled="true">
<intent-filter>
<!-- Intent filters for broadcast receiver -->
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
<action android:name="android.net.wifi.STATE_CHANGE" />
</intent-filter>
</receiver>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
public class InternetConnectionBroadcastReceiver extends BroadcastReceiver {
public InternetConnectorBroadcastReceiver() {
}
@Override
public void onReceive(Context context, Intent intent) {
}
}
충분하다