大家好,我有可以在其他平台(从 1.6+ 开始)上运行的示例应用程序,但是相同的应用程序无法在我的新 Android 4.1 模拟器上运行。问题是关于 HttpConnection。意思是假设我想登录然后我无法做到这一点。代码没有问题,因为它在所有其他 AVD(1.6,2.1,2.2) 上工作正常。
我也尝试使用简单的 httpconnection 代码,但仍然无法正常工作。
有任何特殊设置需要在 4.1 的模拟器上运行互联网。但是在我以前的平台上我没有做任何设置。
我的 HttpConnection 代码如下:
public String httpGetResponse(String url) {
connectionUrl = url;
query_string="";
String response = null;
try {
int loc = url.indexOf('?');
if(loc>-1){
try {
query_string=url.substring(loc);
} catch (Exception e) {
query_string="";
}
}
processGetRequest();
HttpResponse httpresponse = httpclient.execute(host, get);
response = EntityUtils.toString(httpresponse.getEntity());
} catch (Exception e) {
response = null;
}
return response;
}
我将此方法称为:
response = connectionUtil.httpGetResponse("My URL");
在所有其他平台上,我得到的响应是 String ,但是在 4.1 中,我得到的响应是:
response:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org /TR/html4/loose.dtd"><HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso- 8859-1"><TITLE>ERROR: The requested URL could not be retrieved</TITLE>
…………
如有任何建议,我们将不胜感激。提前致谢。
最佳答案
这个问题有两个解决方案。
1) 不要在主 UI 线程中编写网络调用,为此使用异步任务。
2) 在 setContentView(R.layout.activity_main) 之后将下面的代码写入您的 MainActivity 文件;
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
然后将下面的 import 语句导入到您的 java 文件中。
import android.os.StrictMode;
关于android - 应用程序不适用于 Android 4.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13174537/