Android application self-update

24,767

If the updated apk has the same package name and is signed with the same key you can just send a intent which will call a default android installer. The installed apk will be overriden.

Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.fromFile(new File(pathToApk));
intent.setDataAndType(uri, "application/vnd.android.package-archive");
startActivity(intent);
Share:
24,767
nonickh
Author by

nonickh

Updated on July 03, 2020

Comments

  • nonickh
    nonickh almost 4 years

    Possible Duplicate:
    Android: install .apk programmatically

    I need to update my android application. Internally the program, I download the new version. How can I replace the current version by that new was downloaded (programmatically)?

    URL url = new URL("http://www.mySite.com/myFolder/myApp.apk");
    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
    try 
    {
        FileOutputStream fos = this.getApplicationContext().openFileOutput("myApp.apk", Context.MODE_WORLD_READABLE|Context.MODE_WORLD_WRITEABLE);
    
        InputStream in = new BufferedInputStream(urlConnection.getInputStream());
        BufferedReader br = new BufferedReader(new InputStreamReader(in, "UTF-8"));
    
        StringBuilder  sb = new StringBuilder();
    
        byte[] buffer = new byte[8192];
        int len;
        while ((len = in.read(buffer)) != -1) 
        {
           // EDIT - only write the bytes that have been written to
           // the buffer, not the whole buffer
           fos.write(buffer, 0, len);  //  file to save app
        }
        fos.close();
    
        ....     here I have the file of new app, now I need use it
    
  • nonickh
    nonickh over 12 years
    Hi @lexmiir, thanks for reply, I do what you said and now I got an alert dialog saying Parser Error - There is a problem parsing the package. Any clues? :-)
  • Alexei
    Alexei over 12 years
    Hi @nonickh, did you signed both apk's with the same key? This error may appear when the applications with the same package name are signed with different keys
  • nonickh
    nonickh over 12 years
    Hi @lexmiir, Sorry for the delay, I compared the two files and they are different, probably caused by the process of copying the site, I first try to resolve this problem, grateful for your support
  • David O'Meara
    David O'Meara almost 12 years
    probably already resolved, but for future reference you should not write the full buffer, only the number of bytes read ie fos.write(buff, 0, len) where len will probably be less than buffer.length when the last chunk is written.
  • 2red13
    2red13 almost 12 years
    I had the same error and solved it by uploading the apk file by using binary mode in the ftp program.