Android 2.3.3互联网适用于我的Galaxy S但不适用于我的Galaxy Tab? (权限)

时间:2012-06-26 15:02:46

标签: java android android-4.0-ice-cream-sandwich httpurlconnection ui-thread

我有这个奇怪的问题。我正在检索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"/>

2 个答案:

答案 0 :(得分:6)

我发誓,这个问题每天都在StackOverflow上提出。 :)

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

阅读我关于这个主题的博文:

Why Ice Cream Sandwich Crashes Your App

答案 1 :(得分:3)

使用此代码,它适用于我。

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

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

    }