我想为我的应用程序安装一个BroacastReceiver,因此我希望在BoradcastListener中检测所有广播操作(wifiManger.getResultscan; connectivityManager.getActiveNetworkInfo;以及其他可能)。如何将MainActivity中的BroadcastReceiver与broadcastListner calss连接?
private void check_wifi_available() {
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
final List<ScanResult> results = wifiManager.getScanResults();
if (results != null) {
// list of access points from the last scan
List<ScanResult> updatedResults = new ArrayList<ScanResult>();
// pick Wi-Fi access points which begins with these "SV-"
// characters.
for (int i = 0; i < results.size(); i++) {
String ssid = results.get(i).SSID;
// Pattern p = Pattern.compile("^KD-(4[0-9]{2}|500)$");
// Matcher m = p.matcher(ssid);
// if(m.matches()){}else{}
if (ssid.startsWith("KD")) {
updatedResults.add(results.get(i));
}
}
if (updatedResults.size() > 0) {
String a = deliverBestAccessPoint(updatedResults);
textWifi.setText(a.toString());
}
}
}
}, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
public void onReceive(Context context, Intent intent) {
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = connectivityManager.getActiveNetworkInfo();
boolean isConnected = netInfo != null
&& netInfo.isConnectedOrConnecting();
if (isConnected) {
Toast.makeText(context, "The device is connected to the internet ",
Toast.LENGTH_SHORT).show();
Log.i("NET", "connecte" + isConnected);
} else {
Toast.makeText(context,
"Please connect the device to the internet.",
Toast.LENGTH_SHORT).show();
}
}
答案 0 :(得分:1)
首先创建接收器变量
private BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//Compare intent.getAction() with your required intents
}
然后调用registerReceiver
registerReceiver(receiver, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));registerReceiver(receiver, new IntentFilter(other required intent filter constants));
答案 1 :(得分:0)
只需单独创建IntentFilter并添加您想要处理的所有操作:
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("action1");
intentFilter.addAction("action2");
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// I have this one here to dectect wifi access points (getResultScan)
}, intentFilter);
答案 2 :(得分:0)
在包名中创建一个新类;
public class DiscoDancer extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//check here with, intent.getAction() and macth with your action
}
}
在AndroidManifest.xml中
<receiver android:name="DiscoDancer">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED">
<action android:name="android.intent.action.ACTION_BATTERY_LOW">
//Add all the intents here
</action>
</intent-filter>
</receiver>