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

آپدیت برنامه با کتابخانه volley

mosafer  9 سال پیش  9 سال پیش
0 0

با سلام 

من به وسیله کدهای زیر برنامم رو هر چند وقت یک بار آپدیت میکنم.

ابتدا ورژن برنامم رو چک میکنم:

 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 سال پیش)
 برای این سوال پاسخی وجود ندارد.

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