بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
مشکل با پروژه Downloader ( حل شد )
سلام دوستان ، در این پروژه داخل SD-CARD برام فولدر file-downloder رو می سازه ولی داخلش فایل sample-image.png رو نمی سازه . هیچ اروری ندارم . روی امولیتور جدید و روی گوشی هم امتحان کردم ولی همین مشکل رو دارم . تو انجمن هم سرچ کردم ولی مشکلم حل نشد. کدها رو میزارم به نظرتون مشکل از کجاست ؟. در manifest.xml هم پرمیشن اندروید و نوشتن رو External Storage رو زدم .
// Codes of G class :
package com.example.n5110.mydownloader;
import android.app.Application;
import android.os.Environment;
import java.io.File;
public class G extends Application {
public static final String DIR_SDCARD = Environment.getExternalStorageDirectory().getAbsolutePath();
public static final String DIR_APP = DIR_SDCARD + "/file-downloader/";
@Override
public void onCreate() {
super.onCreate();
new File(DIR_APP).mkdirs();
}
}
// Codes of MainActivity class :
package com.example.n5110.mydownloader;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FileDownloader.download("http//192.168.1.34/file-server/image2.png", G.DIR_APP + "/sample-image.png");
}
}
// Codes of FileDownloader class :
package com.example.n5110.mydownloader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class FileDownloader {
public static void download(String downloadPath, String filepath) {
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();
}
}
}
+1
0

پسوند عکس های سمت سرور هم .png ان؟ (8 سال پیش)
0
0

دو تا عکس گذاشتم توش ؛ یکی png و دیگری jpg هست . (8 سال پیش)
+1
0

پسوند ها رو هماهنگ کن احتمالا مشکلت حل میشه (8 سال پیش)
+1
0

درضمن یک بار هم آدرسی که برای دانلود عکس دادی رو چک کن (شاید اونم هم مشکل داره :) )
آدرس رو کپی کن تو مرورگر ببین عکست رو میاره یا نه (8 سال پیش)
0
0

ممنونم ؛ پسوند ها رو یکی کردم ولی بازم نساخت . ادرس هم درسته چک کردم . (8 سال پیش)
0
0

دوستان یه فولدر دیگه هم ساختم ولی simple-image.png توش ساخته نشد بازززز !! (8 سال پیش)
برای این سوال 2 پاسخ وجود دارد.
مشاهده پاسخ صحیح

پاسخ به سوال
MarAnd
8 سال پیش
0
0

پاسخ به سوال
MarAnd
8 سال پیش
0
0
پاسخ صحیح
خب بالاخره بعد از کلی جستجو مشکل کارم پیدا شد اینجا میزارم تا در اینده اگه کسی بهش برخورد در وقتش صرفه جویی بشه :)
ایراد کد اینجا بود که من در هیچ کدوم از کلاس هام برای ارسال درخواستم از Thread استفاده نکرده بودم که AsyncTask این کار رو انجام میده و در واقع صرفا یک ترد باز می کنیم تا عملیات گرفتن انجام بشه و کلاس MainActivity به این شکل تغییر می کنه :
package com.example.n5110.mydownloader;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new DownloadFile().execute();
}
private class DownloadFile extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
FileDownloader.download("http://192.168.1.34/file-server/image2.jpg", G.DIR_APP + "sample-image.jpg");
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
Toast.makeText(G.context, "Finish", Toast.LENGTH_SHORT).show();
}
}
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .