آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

مشکل در متد اتصال به اینترنت

mma-amini  11 سال پیش  11 سال پیش
+1 0

سلام و خسته نباشید

من با استفاده از کدی که آموزش داده شد، کدی رو برای اتصال به اینترنت نوشتم و حتی دسترسی به اینترنت رو هم در 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 هست یا مشکل از چیز دیگه ای هست؟ و اینکه با حذف این قسمت از کدها در کل برنامه مشکلی بوجود نمیاد؟ممنون میشم کمکم کنید.

0 0
ممنون. مشکل حل شد. (11 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
mma-amini  11 سال پیش
+2 0

سلام. در ActivityEnhanced یا هر اکتیویتی دیگه‌ای که قراره ارتباط با اینترنت برقرار کنه در داخل متد onCreate این خطوط رو وارد کنید:

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

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .