我試圖將另一個應用程序的主要活動加載到我自己的視圖層次結構中,類似於可以使用「碎片」所做的操作。將外部活動加載到自己的視圖中?
我已經試過:
Context foreignContext = createPackageContext("com.android.calculator2", Context.CONTEXT_IGNORE_SECURITY | Context.CONTEXT_INCLUDE_CODE);
Class<?> foreignClass = foreignContext.getClassLoader().loadClass("com.android.calculator2.Calculator");
Intent intent = new Intent(this, foreignClass);
View view = getLocalActivityManager()
.startActivity("ReferenceName", intent
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
.getDecorView();
this.setContentView(view);
這將失敗,因爲ClassNotFoundException
它試圖找到com.my.app/com.android.calculator2.Calculator
(我假設在getLocalActivityManager
的Local
添加前綴?)
有什麼辦法來實現這一目標?我不需要與外部活動或其代碼進行交互,只需將其顯示在我自己的活動中,那麼僅僅通過意圖啓動它就行不通。我認爲這是不可能的,由於安全考慮,但如果我可以(理論上)訪問外國應用程序的代碼,應該可以以某種方式運行它的onCreate
方法?
謝謝!
這將是很好的,那麼我可以在幾分鐘內在市場上銷售50個暢銷應用程序! ;-)我認爲這屬於注入類別,或者我猜是逆向注入,我懷疑如果沒有嚴重的黑客攻擊以及尚未發現的嚴重安全漏洞,就可以這樣做。 – Idistic