Question

J'ai besoin d'une application Android qui devrait être en mesure de récupérer des données à partir du Web (peut-être un .apk ou un .jar) et le lancement « quelque chose » de celui-ci.

S'il est une classe « trivial » il n'y a pas de problème du tout. Ceci est mon Chargeur

package com.m31.android.urlload;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.lang.ClassLoader;
import java.net.URL;

import dalvik.system.PathClassLoader;
import dalvik.system.DexClassLoader;


public class Loader extends ClassLoader {
    public Loader() throws IOException {
        super(Loader.class.getClassLoader());
    }

    public Class loadClass(String className) throws ClassNotFoundException {
         return findClass(className);
    }

    private String fetch_package(String url) throws IOException {
        BufferedInputStream in = new BufferedInputStream(new URL(url).openStream());
        FileOutputStream fos = new FileOutputStream("/mnt/sdcard/_plugins/plugin1.jar");
        BufferedOutputStream bout = new BufferedOutputStream(fos,1024);
        byte data[] = new byte[1024];
        int count;
        while((count = in.read(data,0,1024)) > 0) {
            bout.write(data,0,count);
        }
        bout.close();
        in.close();
        return "/mnt/sdcard/_plugins/plugin1.jar";
    }

    public Class findMyClass(String className, String url) throws IOException, ClassNotFoundException {
        String path = fetch_package(url);
        DexClassLoader pcl = new DexClassLoader(path, "/mnt/sdcard/_dex/", null, this);
        return pcl.loadClass(className);


    }
}

Le problème est que le code que je veux exécuter ressemble fort à une application, ce qui devrait avoir une vue « simple » et une interaction sur elle.

Je ne suis pas en mesure d'invoquer la méthode « onCreate » de ma classe téléchargée.

Je suppose que j'ai trois rues:

  1. Je cherche une méthode qui installe silencieusement l'application, puis l'exécute (est-il possible?);
  2. Avec votre aide, je comprends comment initialiser une seconde « application » dans mon propre un (avec sa propre R et toutes les choses);
  3. J'écris mon programme maître pour extraire des données à partir des pages Web et construire dynamiquement.

Alors, je vraiment besoin de votre aide!

Était-ce utile?

La solution

Je suis assez sûr que vous ne pouvez pas installer silencieusement une nouvelle application. De plus, je suis incapable de trouver un moyen d'enregistrer une nouvelle activité dans une application existante lors de l'exécution. Je suppose que vous pourriez écrire un WrapperActivity qui passe tous les appels vers un autre que vous chargez dynamiquement, mais cela laisse non résolu le problème de pouvoir charger les données de ressources.

En fin de compte, vous devrez probablement soit écrire votre code pour éviter complètement l'utilisation du système de ressources Android (possible mais difficile), ou tout simplement aller avec un WebView et HTML avec JavaScript (plus difficile à mettre en cache et moins natif prospectifs, mais beaucoup plus simple à mettre en œuvre) pour les bits dynamiques.

Autres conseils

  

Je cherche une méthode qui installe silencieusement l'application, puis l'exécute (est-il possible?);

Non, il est impossible. Ce serait un problème de sécurité.

  

Avec votre aide, je comprends comment   initialiser une seconde « application »   à l'intérieur de moi-même l'un (avec sa propre R et   toutes choses);

Je pense que ce sera dans la gamme difficile à impossible.

  

J'écris mon programme maître pour extraire des données à partir des pages Web et construire dynamiquement.

Il y a certainement des choses qui correspondent à cette description qui devrait fonctionner. Personnellement, je vous recommande d'utiliser HTML5 juste, peut-être hébergé par un WebView, puisque HTML est une solution éprouvée et vraie pour générer dynamiquement UIs (comme cette page Web très illustre).

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