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

APK_PATH = "" /mnt/sdcard/target.apk " – user9950

+1

壊れています。非常に壊れています。SDカードへのパスは、Environmentクラスを使用して検出されます。 – hackbod

0

幸いにも、これは不可能です。

関連する問題