我正在尝试了解ConnectivityManager的详细信息。我注意到有方法setNetworkPreference()和getNetworkPreference(),但documentation中没有关于如何使用它们的细节,除了它们分别接受/返回一个整数。还有一个名为DEFAULT_NETWORK_PREFERENCE的常量,但这并没有提供很多提示。有什么想法吗?
提前致谢!
答案 0 :(得分:3)
你是对的没有文件。如果你在android的源代码中grep,你会看到以下内容。
user@host:~/android/system/frameworks$ grep -r "setNetworkPreference" *
base/core/java/android/net/IConnectivityManager.aidl: void setNetworkPreference(int pref);
base/core/java/android/net/ConnectivityManager.java: public void setNetworkPreference(int preference) {
base/core/java/android/net/ConnectivityManager.java: mService.setNetworkPreference(preference);
...
base/cmds/svc/src/com/android/commands/svc/WifiCommand.java: connMgr.setNetworkPreference(ConnectivityManager.TYPE_WIFI);
base/cmds/svc/src/com/android/commands/svc/DataCommand.java: connMgr.setNetworkPreference(ConnectivityManager.TYPE_MOBILE);
base/services/java/com/android/server/ConnectivityService.java: public void setNetworkPreference(int preference) {
从上面看,似乎只有TYPE_WIFI
和TYPE_MOBILE
用于设置访问网络的首选方法。
答案 1 :(得分:1)
测试网络的一个例子:
public static boolean checkStatus(Context context)
{
final ConnectivityManager connMgr = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
final android.net.NetworkInfo wifi = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
final android.net.NetworkInfo mobile = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if( wifi.isAvailable() || mobile.isAvailable())
{
return true;
}
else
{
Log.i(DEBUG_TAG, "No network available");
return false;
}
}