我有两个独立的应用程序。应用程序A和应用程序B.我想从应用程序A开始应用程序B中的活动并返回结果。我可以使用Action在A中调用应用程序B中的活动但是在完成活动后无法返回到应用程序A.永远不会调用A中的OnActivityResult。以下是代码。
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);
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:
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;
}
答案 0 :(得分:1)
也许我错过了什么。应用程序A似乎在应用程序B中为结果启动一个活动并实现onActivityResult。你构建Intent发送方式有一些问题,但让我们暂时忽略它。
据我所知,你发送的意图的形式并不重要,因为应用程序B从不看它。接收活动应该调用getIntent()。根据传入的ACTION,它设置一个结果代码并返回Intent,调用setResult(),然后调用finish()。你的代码没有这样做;相反,看起来你正试图通过调用startActivityForResult()来启动应用程序A.
我明白为什么你可能尝试过这个,但顺序应该是:
结果Intent Y 不是由startActivityForResult发送的;相反,它是由setResult()和finish()的组合发送的。