我正在开发在线应用程序。 [问题]当互联网关闭或不可用时,它会给我错误[强制关闭],我尝试使用broadCast Receiver进行处理,但没有满足确切的解决方案,正在寻找更好的解决方案。
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent intent) {
NetworkInfo info = intent
.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
if (null != info) {
String state = info.getState().toString();
if (state.equalsIgnoreCase("CONNECTED")) {
SplashScreen.isWiFiConnected = true;
Log.i("isWifiConnected", "=================TRUE");
} else {
SplashScreen.isWiFiConnected = false;
Log.i("isWifiConnected", "=================FALSE");
}
}
}
}
thanks.
static String data = null;
private static HttpPost httppost;
private static HttpParams httpParameters;
private static int timeoutConnection = 30000;
private static HttpClient httpclient = null;
private static HttpResponse response = null;
private static int responseCode=0;
public static ConnectivityManager mConnectivityManager;
public static NetworkInfo mNetworkInfo;
public static boolean isNetError=false;
/** Post Http data and returns final string and status on network */
public static void postHttp(String Url, Activity mActivity) {
try {
isNetError=false;
mConnectivityManager= (ConnectivityManager) mActivity.getSystemService(Context.CONNECTIVITY_SERVICE);
mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
if (mNetworkInfo != null && mNetworkInfo.isConnectedOrConnecting())
{
httppost = new HttpPost(Url);
httpParameters = new BasicHttpParams();
HttpConnectionParams.setSoTimeout(httpParameters, timeoutConnection);
httpclient = new DefaultHttpClient(httpParameters);
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("text", "some Text"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, HTTP.UTF_8));
// Execute HTTP Post Request
response = httpclient.execute(httppost);
data = EntityUtils.toString(response.getEntity());
}
else
isNetError=true;
} catch (Exception e) {
e.printStackTrace();
isNetError=true;
}
if (responseCode == 200)
{
isNetError=false;
System.out.println("final..." + data);
}
else
isNetError=true;
}
在 asynctask 的 doInBackground() 中调用此方法,并在 onPostExecute() 检查 isNetError 值以及添加权限的其他答案中提到的<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
if(isNetError)
//No internet
else
//do your stuff
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)