我正在嘗試做類似於stackoverflow posting的操作。我想要做的是從SD卡上讀取活動或服務的定義。爲避免出現明顯的權限問題,我在.apk中創建了此活動的shell版本,但嘗試在運行時將其替換爲存儲在SD卡上的同名活動。不幸的是,我可以使用DexClassLoader從SD卡加載活動類定義,但原始類定義是執行的。有沒有一種方法可以指定新的類定義替換舊的定義,或者在沒有實際提供包中所需的活動的情況下避免出現清單權限問題的任何建議?代碼示例:Android,如何使用DexClassLoader動態替換活動或服務
發動/sdcard/mypath/My.apk
指定的
com.android.my.path.to.a.loaded.activity
的
ClassLoader cl = new DexClassLoader("/sdcard/mypath/My.apk",
getFilesDir().getAbsolutePath(),
null,
MainActivity.class.getClassLoader());
try {
Class<?> c = cl.loadClass("com.android.my.path.to.a.loaded.activity");
Intent i = new Intent(getBaseContext(), c);
startActivity(i);
}
catch (Exception e) {
這一翻譯,它會啓動靜態加載到項目活動。
我有一種感覺,這不能簡單地完成,因爲Android如何處理資產。如果您在另一個應用程序的類中調用了startActivity,它將不得不加載該應用程序的線程,因此它只是Android Intents的一個危險的替代方案。 – Tom 2011-08-01 03:42:18