2010-08-12 185 views
1

我需要一个Android应用程序,它应该能够从网上获取数据(可能是.apk或.jar)并从中启动“某些东西”。运行外部代码/应用程序的Android应用程序?

如果这是一个“微不足道”的课程,那完全没有问题。这是我的装载机

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


    } 
} 

的问题是,我想执行看起来非常像一个应用程序,它应该有一个“简单”的观点,并在它的一些互动的代码。

我无法调用我下载的类的“onCreate”方法。

我想我已经三条街:

  1. 我找这静默安装应用程序的方法,然后运行它(?有没有可能);
  2. 在你的帮助下,我明白如何在我自己的内部初始化第二个“应用程序”(使用它自己的R和所有东西);
  3. 我写我的主程序从网上获取数据并动态构建页面。

所以,我绝对需要你的帮助!

回答

0

我很确定你不能默默地安装一个新的应用程序。另外,我一直无法找到任何方法在运行时将新的Activity注册到现有的应用程序中。我想你可以编写一个WrapperActivity,将所有调用传递给你动态加载的另一个,但这仍然会导致无法加载资源数据的问题。最后,您可能需要编写代码以完全避免使用Android资源系统(可能但困难),或者仅使用带有JavaScript的WebView和HTML(难以缓存且本机看起来较少) ,但实现起来要简单得多)。

+0

那么devAppsDirect应用程序如何工作? https://play.google.com/store/apps/details?id=com.inappsquared.devappsdirect。我的意思是,我知道它不会安装apks,但它运行得非常好,而且它似乎存在于应用程序的内部存储器本身内。 – 2013-06-28 09:02:49

1

我寻找一种静默安装应用程序然后运行它的方法(是否有可能?

不,这是不可能的。这将是一个安全问题。

有了您的帮助,我知道如何 初始化里面我自己一个人了第二个“应用程序” (与自己的研发和 所有的东西);

我怀疑这将是在难以到达的范围内。

我写我的主程序从网络中获取数据并构建页面。

肯定有些事情适合这种描述应该工作。就个人而言,我建议您只使用HTML5,也许由WebView托管,因为HTML是一种可靠的动态生成用户界面的解决方案(如此网页所示)。

+0

就像我怀疑......我会让你知道! – 2010-08-12 18:56:55