J1a*_*nd1 31 android android-service
我有一个应用程序,只要手机连接到WiFi,它就会更新数据库.我实现了一个Service
和BroadcastReceiver
这将运行Service
(它会告诉我是什么用网络),但问题是我不知道是什么的在添加manifest
文件开始BroadcastReceiver
当它连接到某种当网络状态发生变化或网络
nul*_*ent 60
你需要
<intent-filter>
<action android:name="android.net.wifi.WIFI_STATE_CHANGED"/>
<action android:name="android.net.wifi.STATE_CHANGE"/>
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
在你的receiver
标签.
或者如果你想要更多地控制它,在注册之前BroadcastReceiver
设置它们:
final IntentFilter filters = new IntentFilter();
filters.addAction("android.net.wifi.WIFI_STATE_CHANGED");
filters.addAction("android.net.wifi.STATE_CHANGE");
super.registerReceiver(yourReceiver, filters);
Run Code Online (Sandbox Code Playgroud)
WIFI_STATE_CHANGED
广播<intent-action>
表示已启用,禁用,启用,禁用或未知Wi-Fi.一个额外提供此状态为int.如果可用,另一个额外提供先前的状态.
STATE_CHANGE
广播<intent-action>
指示Wi-Fi连接状态已更改.一个额外的以NetworkInfo对象的形式提供新状态.如果新状态是CONNECTED,则额外的附加可以提供接入点的BSSID和WifiInfo.作为一个字符串
此外,您还需要在manifest
标记内指定正确的权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
Run Code Online (Sandbox Code Playgroud)
要检查连接性,您可以使用ConnectivityManager
它,因为它告诉您可用的连接类型.
ConnectivityManager conMngr = (ConnectivityManager)this.getSystemService(this.CONNECTIVITY_SERVICE);
android.net.NetworkInfo wifi = conMngr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
android.net.NetworkInfo mobile = conMngr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
Run Code Online (Sandbox Code Playgroud)
这是我在连接发生变化时收到通知的方法.您定义a BroadCastReceiver
以接收广播.
public class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo wifi = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
NetworkInfo mobile = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
boolean isConnected = wifi != null && wifi.isConnectedOrConnecting() ||
mobile != null && mobile.isConnectedOrConnecting();
if (isConnected) {
Log.d("Network Available ", "YES");
} else {
Log.d("Network Available ", "NO");
}
}
}
Run Code Online (Sandbox Code Playgroud)
您还必须BroadcastReceiver
在清单文件中定义并过滤ConnectivityChange
.
<receiver android:name=".NetworkChangeReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
来源于此
归档时间: |
|
查看次数: |
54041 次 |
最近记录: |