Question

Je travaille sur une application Android pour mon entreprise qui se connecte à un périphérique vidéo Bluetooth. Une entreprise 3ème partie que nous travaillons avec la caméra intégrée Bluetooth et avons construit un service (service Android) que notre application se connecte à laquelle nous utilisons pour interagir avec l'appareil photo. Cette société ne voulait pas que nous ayons accès au code source ils ont créé un SDK sous la forme d'un service qui doit être installé sur le téléphone pour l'interaction avec l'appareil photo doit avoir lieu. Si le service (qui est juste un APK) n'est pas installé notre application ne fonctionnera pas.

Cependant, nous pouvons détecter que le service n'existe pas et passez ensuite pour obtenir le apk et maintenant nous essayons de trouver la meilleure façon de le faire. Est-il possible que nous pourrions avoir l'autre société publier ce service sur le marché Android, même si elle n'a pas ui et lorsqu'il est installé semble ne rien faire? Pouvez-vous mettre quelque chose sur le marché Android et ne pas avoir le montrer sous les filtres normaux (ce qui signifie la seule façon d'y arriver serait en allant directement à la page?). Je ne pense pas qu'ils veulent que les gens l'installer depuis la 3e compagnie du parti ne vend leur propre caméra (presque le même que celui qu'ils font pour nous) et ils ont des applications sur le marché pour elle.

L'autre possibilité est que nous hébergeons le fichier et nous le télécharger lorsque l'utilisateur installe d'abord l'application .. Le problème est que si nous devons trouver notre propre méthodologie pour les mises à jour.

Quelqu'un at-il une expérience avec ce ou avez des idées ce qui pourrait être la meilleure façon de gérer notre situation?

Était-ce utile?

La solution 2

J'ai fini par résoudre le problème en groupant le apk de service à l'actif / dossier de ma demande. Vous pouvez lire ces données comme un flux entrant et de l'écrire à sdcard où vous pouvez lancer l'intention d'avoir le apk installé. Tout l'utilisateur doit faire est cliquez sur Installer (tant qu'ils ont 3 partie les applications autorisées, qu'ils depuis notre application ne sont pas sur le marché non plus.

public static final String SERVICE_APK_FILENAME = "SomeService.apk";

protected void installService() {

    File apk = getServiceFileOnDisk();
    if (!apk.exists()) {
        try {
            writeServiceToFile();
        } catch (Exception ex) {
            Log.e(TAG, "", ex);                
            return;
        }
    }

    Intent promptInstall = new Intent(Intent.ACTION_VIEW);
    promptInstall.setDataAndType(Uri.fromFile(getServiceFileOnDisk()),
            "application/vnd.android.package-archive");
    startActivityForResult(promptInstall, REQUEST_INSTALL_APK);
}

protected File getServiceFileOnDisk() {
    return new File(Util.getAppStorageDirectory(this), SERVICE_APK_FILENAME);
}

protected void writeServiceToFile() throws IOException {
    File apk = getServiceFileOnDisk();
    InputStream assetIs = mAssetMgr.open(SERVICE_APK_FILENAME);
    OutputStream out = new FileOutputStream(apk);
    // Transfer bytes from in to out
    byte[] buf = new byte[4 * 1024];
    int len;
    while ((len = assetIs.read(buf)) > 0) {
        out.write(buf, 0, len);
    }
    assetIs.close();
    out.close();       
}

Alors qu'est-ce qui se passe est lorsque l'application premiers lancements je vérifier si les besoins de service à installer (ou mis à niveau) .. Ce code est un peu plus complexe et en dehors de la portée de ce que je fais ici, donc je ne l'ai pas poster. Mais si je déterminons les besoins de service I à installer invite l'utilisateur avec une boîte de dialogue et si elles cliquez sur ok je puis appeler la méthode installservice ci-dessus.

Autres conseils

Si vous êtes dans cette situation, je recommanderais d'hébergement l'APK de votre serveur de l'entreprise.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top