IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Installation d'un .apk via une application ?


Sujet :

Android

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9
    Par défaut Installation d'un .apk via une application ?
    Bonjour à tous,

    Je suis dans une application Android avec Cordova+Crosswalk, en JS.
    Je suis à la recherche d'une méthode, si cela est possible, pour lancer une installation d'un .apk via mon appli.

    C'est pour la gestion des mises à jours, l'appli fait une demande sur le serveur, si il y a une nouvelle version, l'appli la récupère.
    C'est pour la suite que je bloque, comment faire pour lancer l'installation ? Est ce que cela est possible ?

    Merci d'avance

  2. #2
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Si c'est pour la gestion des MaJ, pourquoi ne pas passer par le Play Store, tout simplement ?
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9
    Par défaut
    C'est une petite appli interne à l'entreprise, pas besoin qu'elle soit soit un store.


    EDIT : J'ai trouvé une solution, je cherchais trop loin, un simple window.open ...

  4. #4
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Par défaut
    Bonjour,

    Pour installer un apk :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory() + "/download/" + "app.apk")), "application/vnd.android.package-archive");
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);
    Il faut bien sure le télécharger au préalable.

    Voici un AsyncTask qui télécharge et installe l'apk :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
     
    public class UpdateAsyncTask extends AsyncTask<Void, Integer, Exception> {
        private String url;
        private Activity activity;
        private File outFile;
        private ProgressDialog mProgressDialog;
     
        public UpdateAsyncTask (Activity activity, String url)
        {                     
            super();
            this.activity = activity;
            this.url = url;
        }
     
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
     
            showDialog();
            mProgressDialog.show();
            DialogUtil.customDialog(activity, mProgressDialog);
        }
     
        @Override
        protected void onProgressUpdate(Integer... values) {
            super.onProgressUpdate(values);
            mProgressDialog.setProgress(Integer.valueOf(values[0]));
        }
     
        @Override
        protected Exception doInBackground(Void... params) {
            if (url == null) {
                throw new NullPointerException();
            }
     
            OkHttpClient client = new OkHttpClient();
     
            InputStream is = null;
            FileOutputStream fos = null;
     
            OkUrlFactory okUrlFactory = new OkUrlFactory(client);
     
            HttpURLConnection httpURLConnection = null;
            try {
                httpURLConnection = okUrlFactory.open(new URL(url));
                httpURLConnection.setRequestMethod("GET");
                httpURLConnection.connect();
                final int responseCode = httpURLConnection.getResponseCode();
                if (responseCode != 200) {
                    return new SyncHttpException("erreur", responseCode);
                }
     
                int lenghtOfFile = httpURLConnection.getContentLength();
                is = httpURLConnection.getInputStream();
     
    // On crée le fichier dans lequel on sauvegarde l'apk
                String PATH = Environment.getExternalStorageDirectory() + "/download/";
                File file = new File(PATH);
                file.mkdirs();
                // Create a file on the external storage under download
                outFile = new File(file, "app.apk");
                if (file.exists())
                    outFile.delete();
                outFile.createNewFile();
     
                fos = new FileOutputStream(outFile);
                byte data[] = new byte[1024];
                long total = 0;
                int progress = 0;
                int count;
                while ((count = is.read(data)) != -1) {
                    total += count;
                    int progress_temp = (int) total * 100 / lenghtOfFile;
    // On met à jour la jauge de la modal
                    onProgressUpdate(progress_temp);
                    if (progress_temp % 10 == 0 && progress != progress_temp) {
                        progress = progress_temp;
                    }
                    fos.write(data, 0, count);
                }
     
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (ProtocolException e) {
                e.printStackTrace();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                return e;
            } finally {
                if (is != null) {
                    try {
                        is.close();
                    } catch (IOException e) {
                        return e;
                    }
                }
                if (fos != null) {
                    try {
                        fos.close();
                    } catch (IOException e) {
                        return e;
                    }
                }
            }
     
            return null;
        }
     
        @Override
        protected void onPostExecute(Exception e) {
            if (mProgressDialog.isShowing())
                mProgressDialog.cancel();
            if (e == null) {
                if (outFile != null) {
                    try {
                        Intent intent = new Intent(Intent.ACTION_VIEW);
                        intent.setDataAndType(
                                Uri.fromFile(outFile),
                                "application/vnd.android.package-archive");
                        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        activity.startActivity(intent);
                    } catch (Exception ex) {
                        ex.printStackTrace();
                        Intent intent = new Intent(Intent.ACTION_VIEW);
                        intent.setData(Uri.fromFile(outFile));
                        activity.startActivity(intent);
                    }
                }
            } else {
                e.printStackTrace();
    // TODO do something
            }
        }
     
        public void showDialog() {
            if (mProgressDialog == null) {
                mProgressDialog = new ProgressDialog(activity);
                mProgressDialog.setCancelable(false);
                mProgressDialog.setProgressNumberFormat(null);
                mProgressDialog.setTitle(R.string.download);
                mProgressDialog.setMessage("Téléchargement de l'apk");
                mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                mProgressDialog.setProgress(0);
                mProgressDialog.setMax(100);
            }
        }
    }

  5. #5
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Il faut aussi qu'Android soit réglé pour accepter les sources inconnues.
    Et il faut quand même que l'utilisateur accepte (valide) l'installation.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2015
    Messages : 7
    Par défaut
    Il y a beaucoup plus simple :p (sauf si j'ai mal compris)
    Upload ton apk sur médiafire et accède à ton lien mf via ton appareil android et télécharge l'apk.
    Il va ensuite ce mettre dans la partie téléchargement de ton appareil, clique dessus, sa t'ouvre un menu, et clique sur programme d'installion, attends et le tour est joué !

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9
    Par défaut
    Bonjour,

    Merci David pour ce bout de code, le AsyncTask est intéressant (c'est en java, je travail en JS actuellement)

    Citation Envoyé par nicroman Voir le message
    Il faut aussi qu'Android soit réglé pour accepter les sources inconnues.
    Et il faut quand même que l'utilisateur accepte (valide) l'installation.
    Oui, pour les sources inconnues c'est bon, et bien-sur, l'utilisateur fini lui même l'installation.

    Je ne connais pas 'mediafire', je vais me renseigner

    merci à tous =)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ouvrir un fichier local , via une application Web
    Par Panneau dans le forum Développement Web en Java
    Réponses: 3
    Dernier message: 22/05/2008, 15h20
  2. Réponses: 2
    Dernier message: 11/02/2008, 11h23
  3. Recuperer une base mySQL d'un site distant via une application Java
    Par tchoukapi dans le forum Persistance des données
    Réponses: 2
    Dernier message: 02/07/2007, 15h26
  4. Appeler via une application J2ME
    Par Kornikopic dans le forum Java ME
    Réponses: 9
    Dernier message: 07/06/2007, 10h27
  5. Envoyer des SMS via une application en C++
    Par yakotey dans le forum C++
    Réponses: 1
    Dernier message: 09/01/2006, 19h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo