我有这个奇怪的问题。我正在检索twitters,它可以在模拟器和我的三星Galaxy S上运行,但它在我的Galaxy Tab 10.1上不起作用?
手机和标签上都安装了相同的应用。从Eclipse生成所以没有调试或任何东西。
需要不同的权限吗?
这是代码:
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(searchUrl);
ResponseHandler<String> responseHandler = new BasicResponseHandler();
responseBody = client.execute(get, responseHandler);
这就是清单:
<uses-sdk android:minSdkVersion="10" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
答案 0 :(得分:6)
我发誓,这个问题每天都在StackOverflow上提出。 :)
问题是您正在主UI线程上执行网络访问。如果您尝试在主线程上执行HTTP请求,Android 3.0及更高版本将使您的应用程序崩溃(即系统将抛出NetworkAccessOnMainThread
异常)。您需要将HTTP请求包装在AsyncTask
(或某些类别的Thread
)中,以确保不阻止UI线程。
阅读我关于这个主题的博文:
答案 1 :(得分:3)
使用此代码,它适用于我。
if (android.os.Build.VERSION.SDK_INT > 8) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}