مشکل در متد اتصال به اینترنت
سلام و خسته نباشید
من با استفاده از کدی که آموزش داده شد، کدی رو برای اتصال به اینترنت نوشتم و حتی دسترسی به اینترنت رو هم در AndroidManifest قرار دادم. کد من کاملا شبیه کد آموزش داده شده است:
HttpClient client = new DefaultHttpClient();
HttpGet method = new HttpGet("http://www.google.com");
try {
HttpResponse response = client.execute(method);
int code = response.getStatusLine().getStatusCode();
Log.i("LOG", "Response code: " + code);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
اما وقتی که این کد رو اجرا میکنم با این خطا به رنگ نارنجی روبرو میشم: threadid=1: thread exiting with uncaught exception (group=0x41465700)و بقیه کد خطا به رنگ قرمز ثبت میشه:E/AndroidRuntime(794): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myprogs.newclient/com.myprogs.newclient.MainActivity}: android.os.NetworkOnMainThreadExceptionخطا رو هم در این قسمت از کد میگیره:
HttpResponse response = client.execute(method);
من از ADT نسخه 22 دارم استفاده میکنم که برای ایجاد پروژه نیازمند تعیین minsdk و TargetSDK هست. در حالت عادی کد xml فایل AndroidManifest به این شکل هست:
<?xml version="1
.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.myprogs.newclient"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.myprogs.newclient.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
فقط وقتی این مشکل حل میشه که من در فایل AndroidManifest قسمت های زیر رو حذف کنم:
android:targetSdkVersion="18"
android:allowBackup="true"
android:theme="@style/AppTheme"
میخواستم بدونم که مشکل فقط از همین یک کدهای XML هست یا مشکل از چیز دیگه ای هست؟ و اینکه با حذف این قسمت از کدها در کل برنامه مشکلی بوجود نمیاد؟ممنون میشم کمکم کنید.
سلام. در ActivityEnhanced یا هر اکتیویتی دیگهای که قراره ارتباط با اینترنت برقرار کنه در داخل متد onCreate این خطوط رو وارد کنید:
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .