2011-06-20 137 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

相關問題