2011-06-20 102 views
0

我有这样的需求,我想在apk文件中启动一个活动,但我不想调用installation.just直接在apk中加载类和资源。如何在没有安装的情况下启动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

你不行。你的代码也被破坏了,比如拥有绝对路径“/ mnt/sdcard”。

+0

the APK_PATH =“”/mnt/sdcard/target.apk“ – user9950

+1

是的,坏了,非常坏,SD卡的路径是使用Environment类找到的。 – hackbod

相关问题