1

我有这个奇怪的问题。我正在检索推特,它适用于模拟器和我的三星 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"/>
4

2 回答 2

6

我发誓,这个问题每天都会在 StackOverflow 上被问到。:)

问题是您正在主 UI 线程上执行网络访问。NetworkAccessOnMainThread如果您尝试在主线程上执行 HTTP 请求,Android 3.0 及更高版本将使您的应用程序崩溃(即系统将抛出异常)。您需要将您的 HTTP 请求包装在一个AsyncTask(或Thread某种类型的)中,以确保您不会阻塞 UI 线程。

阅读我关于该主题的博客文章:

为什么冰淇淋三明治会使您的应用程序崩溃

于 2012-06-26T15:04:27.107 回答
3

使用此代码,它对我有用。

if (android.os.Build.VERSION.SDK_INT > 8) {

        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);

    }
于 2012-12-13T12:54:05.683 回答