Pregunta

Necesito una aplicación para Android que debería ser capaz de obtener los datos de la web "algo" de ella (tal vez una .apk o una .jar) y puesta en marcha.

Si se trata de una clase de "trivial" no hay problema en absoluto. Este es mi Cargador

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);


    }
}

El problema es que el código que desea ejecutar se parece mucho a una aplicación, que debe tener una visión "simple" y algún tipo de interacción en él.

No soy capaz de invocar el método "onCreate" de mi clase descargado.

Creo que he tres calles:

  1. busco un método que instalar la aplicación en silencio y luego lo ejecuta (¿es posible?);
  2. Con su ayuda, entiendo cómo inicializar un segundo "aplicación" dentro de mi propio (con su propia I y todas las cosas);
  3. I escribir mi programa maestro para obtener los datos de las páginas web y construir dinámicamente.

Así que, definitivamente necesito su ayuda!

¿Fue útil?

Solución

Estoy bastante seguro de que no puedo instalar silenciosamente una nueva aplicación. También, he sido incapaz de encontrar alguna manera de registrar una nueva actividad en una aplicación existente en tiempo de ejecución. Supongo que se podría escribir una WrapperActivity que pasa todas las llamadas a otro que se carga dinámicamente, pero que sigue dejando sin resolver el problema de ser capaz de cargar los datos de recursos.

Al final, es probable que necesite tanto para escribir el código para evitar completamente el uso del sistema de recursos Android (posible pero difícil), o simplemente ir con una vista Web y HTML con Javascript (más difícil de caché y menos mirando nativo, pero mucho más sencillo de implementar) para los bits dinámicos.

Otros consejos

  

busco un método que instalar la aplicación en silencio y luego lo ejecuta (¿es posible?);

No, no es posible. Eso sería un problema de seguridad.

  

Con su ayuda, entiendo cómo   inicializar un segundo "aplicación"   dentro de mi propio (con su propia I y   todas las cosas);

Sospecho que va a estar en el rango de difícil imposible.

  

Me escribir mi programa maestro para obtener los datos de las páginas web y construir dinámicamente.

Es cierto que hay cosas que se ajustan a esta descripción que debería funcionar. En lo personal, me gustaría recomendar que acaba de utilizar HTML5, tal vez alojado en un WebView, ya que el HTML es una verdadera solución probada y para la generación dinámica de interfaces de usuario (como esta página web muy ilustra).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top