بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
آپدیت برنامه با کتابخانه volley
با سلام
من به وسیله کدهای زیر برنامم رو هر چند وقت یک بار آپدیت میکنم.
ابتدا ورژن برنامم رو چک میکنم:
private class CheckVer extends AsyncTask<String, Void, String>
{
private ProgressDialog Dialog;
@Override
protected void onPreExecute()
{
super.onPreExecute();
prgDialog = new ProgressDialog(ActivityMain.this);
prgDialog.setMessage("در حال ارتباط با سرور");
prgDialog.show();
}
@Override
protected String doInBackground(String... params)
{
try
{
String url = params[0];
HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet, localContext);
BufferedReader reader = new BufferedReader
(new InputStreamReader(httpResponse.getEntity().getContent()));
char line[];
line = reader.readLine().toCharArray();
String a = new StringBuilder().append(line[0]).append(line[1]).append(line[2]).toString();
if (G.Version.equals(a))
permision = false;
else
permision = true;
}
catch (ClientProtocolException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String result)
{
super.onPostExecute(result);
prgDialog.dismiss();
if (permision == true) {
new UpdateApp().execute(G.file_url);
} else {
Toast.makeText(ActivityMain.this, "برنامه به روز است", Toast.LENGTH_SHORT).show();
//CreateNotification();
}
}
}
اگر ورژن برنامم کوچکتر از ورژن جدید بود :
@Override
protected Dialog onCreateDialog(int id)
{
prgDialog = new ProgressDialog(this);
prgDialog.setMessage("در حال به روز رسانی نرم افزار \nلطفا کمی صبر کنید");
prgDialog.setMax(100);
prgDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
prgDialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));//برای شفاف کردن یک دیالوگ
prgDialog.show();
return prgDialog;
}
private class UpdateApp extends AsyncTask<String, String, Void> {
@Override
protected void onPreExecute()
{
super.onPreExecute();
// if(permision==false)
showDialog(0);
}
@Override
protected Void doInBackground(String... params)
{
try
{
URL url = new URL(params[0]);
HttpURLConnection c = (HttpURLConnection) url.openConnection();
c.setRequestMethod("GET");
c.connect();
String PATH = "/mnt/sdcard/download/";
File file = new File(PATH);
file.mkdir();
String AppName = getString(R.string.app_name) + ".apk";
File outputFile = new File(file, AppName);
if (outputFile.exists())
outputFile.delete();
FileOutputStream fos = new FileOutputStream(outputFile);
InputStream is = c.getInputStream();
int lenght = c.getContentLength();
byte[] buffer = new byte[1024];
int len = 0;
int total = 0;
while ((len = is.read(buffer)) != -1) {
total += len;
fos.write(buffer, 0, len);
publishProgress("" + (int) ((total * 100) / lenght));
}
fos.flush();
fos.close();
is.close();
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory() + "/download/" + AppName)),
"application/vnd.android.package-archive");
startActivity(intent);
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
return null;
}
@Override
protected void onProgressUpdate(String... values)
{
prgDialog.setProgress(Integer.parseInt(values[0]));
}
@Override
protected void onPostExecute(Void result)
{
super.onPostExecute(result);
dismissDialog(0);
}
}
این کد داره برای من کار میده. ولی از اونجایی که تمام اطلاعات دریافتی از سرور رو با کتابخانه volley دارم میگیرم و میترسم که بعدا مشکلی ایجاد بشه میخوام این کار رو هم با volley انجام بدم.
0
0
کسی نیست یه راهنمایی کنه... (9 سال پیش)
برای این سوال پاسخی وجود ندارد.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .