既存のアプリケーションがあります。ここで、いくつかの追加機能を追加したいと思います。追加機能にはいくつかのライブラリが必要です。アプリでライブラリを使用すると、アプリケーションのサイズが大きくなります。したがって、この追加機能を別のアプリで作成し、新しいアプリを既存のアプリに統合したいと考えています (既存のアプリの更新がある場合は、アプリ全体をダウンロードする必要がありますが、これは望ましくありません)。両方を 1 つの APK に入れたくありません。どちらもスタンドアロンである必要があります。最初のアプリケーション A から、新しいアプリケーション B でアクティビティを呼び出したいとします。intent.setComponent() を使用し、アプリケーション B のアクティビティは A から呼び出されますが、最初のアプリケーションでアプリケーション B から結果を取得できません。 .
アプリケーションA
public void onClickBtnToApplicationB(View v) {
try {
final Intent intent = new Intent(Intent.ACTION_MAIN, null);
final ComponentName cn = new ComponentName("pakacagename","package.class");
intent.setComponent(cn);
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivityForResult(intent, REQUEST_CODE);
} catch (ActivityNotFoundException e) {
//handle Exception
}
}
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
switch (requestCode) {
case REQUEST_CODE:
handleResult(resultCode, intent);
break;
}
}
public void handleResult(int resultCode, Intent intentResult) {
switch (resultCode) {
case RESULT_OK:
String Result = intentResult.getStringExtra("RESULT");
// I need Results from Application B here..
break;
case RESULT_CANCELED:
break;
}
}
アプリケーション B: アプリケーション B では、クラス 1 が Result 2.class の別のアクティビティを開始し、結果を取得します。結果が受信された後、処理結果メソッド'a putextras' の最初のアプリケーションに送り返されます。したがって、取得できなかったアプリケーション A の handlerresult メソッドで結果を取得する必要があります。
Intent s = new Intent(1.this,2.class);
startActivityForResult(s, REQUEST_CODE_B);
protected void onActivityResult(int requestCode, int resultCode, Intent intentResult) {
switch(requestCode){
case REQUEST_CODE_B:
handleResult(resultCode, intentResult);
}
}
public void handleResult(int resultCode, Intent intentResult) {
switch (resultCode) {
case RESULT_OK:
String scanResult = intentResult.getStringExtra("RESULT");
Intent newintent = new Intent();
newintent.putExtra("RESULT", scanResult);
setResult(Activity.RESULT_OK, newintent);
finish();
break;
case RESULT_CANCELED:
break;
}