بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
مشکل در پروژه دانلودر
سلام . بنده همه ی کار هایی که گفته شده انجام دادم همون اول پروژه دانلودر کرش میکنه و این ارور میده
قسمت کانکشن ارور میده و من یک 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?)
پاسخ به سوال
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();
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .