앱 실행했을 때 최신버전이 있으면
최신버전을 받는 버튼을 클릭하게 됩니다.
그렇게되면 기존 UI위에 progressBar를 띄우고
100이 되게되면 gone 시킨 후에 설치하시겠습니까?
를 띄울라고 하는데요.
그래서 다운로드 쓰레드는 따로 띄웠습니다.
백그라운드에서 작업할게 아니라서 AsyckTask가 필요 없을거같구..(어싱크테스크가 뭔지 잘 모름..)
일단 이게 제 코드입니다.
현재는 버튼을 누르게 되면 sd카드로 다운로드만 이루어지는 상태구요
그 상태를 progressBar에 띄우고 싶습니다.
여기서 어떻게 더 해야 하는지.. 인터넷 예제 소스를 보고 해서..
필요 없는 부분은 무엇인지..
지적과 가르침좀 부탁드립니다.
public class MainActivity extends Activity {
private ProgressDialog progressDialog;
public static final int progressbarType = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void mOnClick(View v) {
ApkDownload apk = new ApkDownload();
apk.start();
}
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case progressbarType:
progressDialog = new ProgressDialog(this);
progressDialog.setMessage("파일을 다운로드 중입니다. 잠시만 기다려 주십시오...");
progressDialog.setIndeterminate(false);
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setCancelable(true);
progressDialog.show();
return progressDialog;
default:
return null;
}
}
protected void onProgressUpdate(String... progress) {
progressDialog.setProgress(Integer.parseInt(progress[0]));
}
}
class ApkDownload extends Thread {
public ApkDownload() {
super();
}
public void run() {
String apkName = "apk이름";
try {
URL url = new URL("http://apk경로/app/"+apkName+".apk");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.connect();
File sdCardRoot = Environment.getExternalStorageDirectory();
File file = new File(sdCardRoot, apkName+".apk");
InputStream in = urlConnection.getInputStream();
FileOutputStream fos = new FileOutputStream(file);
int totalSize= urlConnection.getContentLength();
int downloadedSize = 0;
byte[] buffer = new byte[totalSize];
int bufferLength = 0;
while ((bufferLength = in.read(buffer)) > 0) {
fos.write(buffer, 0, bufferLength);
downloadedSize += bufferLength;
}
fos.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}