我注意到在棉花糖(例如Nexus6P)和一些最近更新的棒棒糖手机(例如Galaxy S5)上,当我连接到一个没有互联网的wifi网络时,网络将不会完全连接,直到用户接受网络没有互联网接入的提示。
有没有办法通过编程绕过这一检查,并允许wifi连接继续进行,而不考虑互联网接入?
发布于 2016-09-07 15:59:11
没有尝试这些,但您可以尝试将www.google.com
和8.8.8.8重定向到127.0.0.1 (您可以使用iptables或修改/system/hosts
)。您也可以尝试挖掘AOSP源代码(这些是我在AOSP中找到的唯一isReachable()检查)。
如果您决定查找AOSP,您可以启动here
附注: iptables和/system/hosts操作需要root用户。
发布于 2016-09-07 17:12:53
你可以试试这个
要验证网络可用性,请执行以下操作:
private Boolean isNetworkAvailable() {
ConnectivityManager connectivityManager
= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnectedOrConnecting();
}
要验证互联网访问(连接的wifi是否处于活动状态),请执行以下操作:
public Boolean isOnline() {
try {
Process p1 = java.lang.Runtime.getRuntime().exec("ping -c 1 www.google.com");
int returnVal = p1.waitFor();
boolean reachable = (returnVal==0);
return reachable;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
发布于 2016-09-02 14:48:28
检查这些链接..
public final boolean isInternetOn()
{
ConnectivityManager connec = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
// ARE WE CONNECTED TO THE NET
if ( connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED ||
connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED )
{
// MESSAGE TO SCREEN FOR TESTING (IF REQ)
//Toast.makeText(this, connectionType + ” connected”, Toast.LENGTH_SHORT).show();
return true;
}
else if ( connec.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED
|| connec.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED )
{
return false;
}
return false;
}
check Internet connection with url if available
public static boolean hasActiveInternetConnection(Context context) {
if (isNetworkAvailable(context)) {
try {
HttpURLConnection urlc = (HttpURLConnection) (new URL("http://www.google.com").openConnection());
urlc.setRequestProperty("User-Agent", "Test");
urlc.setRequestProperty("Connection", "close");
urlc.setConnectTimeout(1500);
urlc.connect();
return (urlc.getResponseCode() == 200);
} catch (IOException e) {
Log.e(LOG_TAG, "Error checking internet connection", e);
}
} else {
Log.d(LOG_TAG, "No network available!");
}
return false;
}
https://stackoverflow.com/questions/38555204
复制相似问题