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

مشکل در پروژه دانلودر

IIVII  11 سال پیش  11 سال پیش
0 0

سلام . بنده همه ی کار هایی که گفته شده انجام دادم همون اول پروژه دانلودر کرش میکنه و این ارور میده

قسمت کانکشن ارور میده و من یک URL ساده از یک عکس از یک سایت برداشتم و وقتی توی بروزر میزنم راحت بازش میکنه.

 

 03-01 15:52:22.112    2856-2856/com.example.mohamad.testdownloader E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.example.mohamad.testdownloader, PID: 2856
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mohamad.testdownloader/com.example.mohamad.testdownloader.MainActivity}: 
android.os.NetworkOnMainThreadException at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) at android.app.ActivityThread.access$800(ActivityThread.java:144) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5221) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) Caused by: android.os.NetworkOnMainThreadException at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1147) at java.net.InetAddress.lookupHostByName(InetAddress.java:418) at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252) at java.net.InetAddress.getAllByName(InetAddress.java:215) at com.android.okhttp.HostResolver$1.getAllByName(HostResolver.java:29) at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:232) at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:124) at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:272) at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:211) at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:373) at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:106) at com.example.mohamad.testdownloader.FileDownloader.download(FileDownloader.java:21) at com.example.mohamad.testdownloader.MainActivity.onCreate(MainActivity.java:19) at android.app.Activity.performCreate(Activity.java:5933) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)             at android.app.ActivityThread.access$800(ActivityThread.java:144)             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)             at android.os.Handler.dispatchMessage(Handler.java:102)             at android.os.Looper.loop(Looper.java:135)             at android.app.ActivityThread.main(ActivityThread.java:5221)             at java.lang.reflect.Method.invoke(Native Method)             at java.lang.reflect.Method.invoke(Method.java:372)             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
0 0
در سایت جستجو کنید «NetworkOnMainThreadException» (11 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
IIVII  11 سال پیش
0 0

توی یک ترد دیگه فراخانی کردم اما بازم نشد این ارور داد

اینجوری که من فهمیدم به پرمیشن گیر میده درصورتی که من دسترسی هم پرمیشن هم اس دی کارت دادم.

 

 03-01 16:17:27.723    3000-3000/com.example.mohamad.testdownloader E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.example.mohamad.testdownloader, PID: 3000
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mohamad.testdownloader/com.example.mohamad.testdownloader.MainActivity}:
java.lang.SecurityException: Permission denied (missing INTERNET permission?)
0 0
اینجا علت خطا عدم وجود دسترسی به اینترنت هست و راه حلش مطلبی که پایین گذاشتین نیست. (11 سال پیش)
0 0
میدونم و دسترسی و من درست داده بودم اما خب ترد هم جواب نمیده و وقتی از ترد استفاده کردم این اتفاق افتاد . که فکر میکنم چون ترد استارت نکرده بودم اینطوری شده بود خلاصه راه حل پایین بهتره . (11 سال پیش)
پاسخ به سوال 
IIVII  11 سال پیش
0 0

خب من مشکل با AsynTask حل کردم و چون توضیحات خوبی توی انجمن ندیدم تصمیم گرفتم یک توضیح و روش انجامش و بگم

 

برای استفاده از AsynTask به روش زیر عمل کنید کد های پایین مال کلاس FileDownloader هست

 public class FileDownloader extends AsyncTask{


    private String downloadpath;
    private String filepath;


    public FileDownloader(String d,String f){

        downloadpath = d;
        filepath = f;
    }


    @Override
    protected Object doInBackground(Object[] params) {

        try {
            URL url = new URL(downloadpath);
            HttpURLConnection connection = (HttpURLConnection)url.openConnection();
            connection.setRequestMethod("GET");
            connection.setDoOutput(true);
            connection.connect();


            FileOutputStream outputStream = new FileOutputStream(filepath);
            InputStream inputstream = connection.getInputStream();

            byte[] buffer = new byte[8*1024];
            int len=0;
            while ((len = inputstream.read(buffer))>0){

                outputStream.write(buffer,0,len);

            }
            outputStream.close();


        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return "";
    }
}

 

 

خب در بالا بنده کد خومو گذاشتم که ببینید فقط مشتق بگیرید و در doInBackground کد هارو اجرا کنید برای فراخانی هم اینطوری عمل کنید مثلا توی MainActivity بجای نوشتن FIlerdownload.flan به روش زیر عمل کنید

 

 new FileDownloader("آدرس",G.DIR_MAPS + "/sample-image.jpg").execute();

 

 


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