如何在没有安装的情况下在apk中启动活动?

时间:2011-06-20 03:03:39

标签: android android-activity apk

我有这样的需求,我想在apk文件中启动一个活动,但我不想调用installation.just直接加载apk中的类和资源。

这是我的代码 但活动未正确初始化。

     DexClassLoader dLoader = new DexClassLoader( APK_PATH,"/mnt/sdcard",null, ClassLoader.getSystemClassLoader().getParent());  

        PackageInfo pInfo;
          pInfo = getPackageManager().getPackageArchiveInfo(APK_PATH, 1);
          if ((pInfo.activities != null) && (pInfo.activities.length > 0))
          {


              clientClass = dLoader.loadClass(pInfo.activities[0].name);    

              clientInstance = clientClass.getConstructor(new Class[0]).newInstance(new Object[0]);
              Class[] tempClasses = new Class[1];
              tempClasses[0] = Bundle.class;
              Method onCreateMethod = clientClass.getDeclaredMethod("onCreate", tempClasses);
              onCreateMethod.setAccessible(true);
              Object[] tempObjects = new Object[1];
              tempObjects[0] = new Bundle();
              onCreateMethod.invoke(clientInstance, tempObjects);
          }    
有人能帮帮我吗?我将非常感激。

2 个答案:

答案 0 :(得分:2)

你做不到。你的代码也被破坏了,就像在其中使用绝对路径“/ mnt / sdcard”一样。

答案 1 :(得分:0)

幸运的是,这是不可能的。