Allora, ecco il codice che ho trovato (i commenti sono miei, aiutatemi a capire se sono giusti):
MainActivity
  @
Override
    public void onCreate(Bundle savedInstanceState) {
        //omissis
        if (isOnline()) { //Se il telefono è connesso, controlla gli aggiornamenti
            checkForUpdates();
        }
    }
//Controllo se è disponibile la connessione ad internet
    public boolean isOnline() {
        ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        return cm.getActiveNetworkInfo().isConnectedOrConnecting(  );
    }
public void checkForUpdates() {
        String url = "http://www.server.com/yourapp.apk";  //L'indirizzo dove è hostato l'apk
        String PATH = Environment.getExternalStorageDirectory() + "/download/";  //Il percorso in cui verrà scaricato
        File file = new File(PATH); //Crea un nuovo file nel percorso specificato
        file.mkdirs();  //Se necessario, crea le sottocartelle mancanti
        File outputFile = new File(file, "yourapp.apk");  //Scrive il file
        UpdateWithoutPlayStore.downloadFile(url, outputFile);
        UpdateWithoutPlayStore.installApp(context);
        UpdateWithoutPlayStore.deleteApk("yourapp.apk");
    }
UpdateWithoutPlayStore class
//Tutti gli import del caso
public class UpdateWithoutPlayStore {
    {
    }
    public static void downloadFile(String url, File outputFile) {
        try {
            URL u = new URL(url); //Prende l'url del sito
            URLConnection conn = u.openConnection(); //Si collega al sito
            int contentLength = conn.getContentLength(); //Restituisce la lunghezza in byte del file da scaricare
            DataInputStream stream = new DataInputStream(u.openStream());  //Crea un oggetto della classe DataInputStream - dovrebbe servire per il download vero e proprio
            byte[] buffer = new byte[contentLength];
            stream.readFully(buffer);
            stream.close();
            DataOutputStream fos = new DataOutputStream(new FileOutputStream(outputFile));  //Crea un oggetto della classe DataOuyputStream
            fos.write(buffer); //Scrive il file
            fos.flush();  //Svuota il buffer dell'oggetto fos (potrei aver detto una fesseria)
            fos.close();  //Chiude fos
        } catch (FileNotFoundException e) {  //Se il file non è stato trovato, riporta questo errore
            Log.e("FileNotFoundException", e + "");
        } catch (IOException e) {  //Se ci sono stati problemi di I/O riporta questo altro errore
            Log.e("IOException", e + "");
        }
    }
    public static void installApp(Context mycontext) {
        Intent installer = new Intent();  //Crea un nuovo intent
        installer.setAction(android.content.Intent.ACTION_  VIEW);
        String PATH = "file://" + Environment.getExternalStorageDirectory() + "/download/yourapp.apk";  //Specifica il perccorso dove è stato salvvvato il file
        installer.setDataAndType(Uri.parse(PATH), "application/vnd.android.package-archive");
        mycontext.startActivity(installer);  //Lo installa
    }
    public static void deleteApk(String fileName) {
        String fullPath = Environment.getExternalStorageDirectory() + "/download/";
        try {
            File file = new File(fullPath, fileName);
            if (file.exists()) {
                file.delete();
                Log.e("FileStatus","deleted");
            }
        } catch (Exception e){
            Log.e("Exception",e.getMessage());
        }
    }
}
Questo dovrebbe essere quanto necessario per:
1-controllare la connessione ad internet
2-scaricare il file
3-installare la nuova versione
4-cancellare il file
Quello di cui ora ho bisogna è sapere come controllare il versionCode dell'app hostata su Drive e confrontarlo con quello dell'app in uso.
Grazie mille in anticipo