2011-07-09 44 views
2

私は自分のビュー階層に別のアプリケーションの主なアクティビティをロードしようとしています。これは、「フラグメント」でできることと同様です。自分のビューに外部アクティビティを読み込みますか?

私が試してみた:

それが com.my.app/com.android.calculator2.Calculatorを見つけようとするとこれは ClassNotFoundExceptionで失敗
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); 

(私はgetLocalActivityManagerLocalは接頭辞が追加されますと仮定?)

これを達成するためにどのような方法があります?私は外国の活動やそのコードとやりとりする必要はなく、単に自分の活動の中でそれを表示するだけなので、それを単にインテントで起動することはできません。セキュリティ上の理由からこれは不可能だと思っていましたが、(理論的に)外国のアプリケーションのコードにアクセスできる場合は、どういうわけかonCreateメソッドを実行する必要がありますか?

ありがとうございます!

+0

これはいいことですが、市場に出回っているアプリのうち50個を数分で市場に出すことができます。 ;-)私はこれが注射のカテゴリーに入ると思うか、あるいは逆注入と思われます。そして、あなたは深刻なハッキングや未知で重大なセキュリティホールがなければこれを行うことができます。 – Idistic

答えて

0

これを達成する方法はありますか?

絶対にありません。まず、重大なセキュリティ違反になります。

私は(理論的には)外国のアプリケーションのコードにアクセスできれば、何とかそのonCreateメソッドを実行できるはずですか?

外国アプリのコードにアクセスすることはできません。そして、彼らの活動はあなたの目録にありません。

2

私が知っているだけ薄いが、マニフェストの設定を使用することです:sharedUserId

をいますが、外部キー

アンドロイド知っている場合にのみ動作します。sharedUserId

の名前を他のアプリケーションと共有されるLinuxユーザーID。デフォルトでは、Androidは各アプリケーションに固有のユーザーIDを割り当てます。ただし、この属性が2つ以上のアプリケーションで同じ値に設定されている場合は、同じ証明書でも署名されていれば、すべて同じIDを共有します。同じユーザーIDを持つアプリケーションは、お互いのデータにアクセスし、必要に応じて同じプロセスで実行できます。

関連する問題