目前,我有一个问题需要解决。
我的应用程序允许另一个应用程序(假设A)启动我的应用程序并返回结果。
申请电话:
Intent sendIntent =
getPackageManager().getLaunchIntentForPackage("com.my.package");
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.setFlags(0);
sendIntent.putExtra("amount", "20000");
startActivityForResult(sendIntent, 1);
然后我的应用程序将启动MainActivity 但是,为了获得结果并发回给应用程序A,我必须开始另一个活动,让我们说:
MainActivity -> Activity B -> Activity C --> Activity D.
结果可以从活动C或活动D返回到应用程序A.
注意:我不能使用标志FLAG_ACTIVITY_FORWARD_RESULT,因为从B到C,我调用了“startActivityForResult”。 (startActivityForResult和标志FLAG_ACTIVITY_FORWARD_RESULT无法一起进行)。
您能否告诉我如何实现这一目标?
非常感谢。
答案 0 :(得分:0)
要获取结果,您可以从MainActiviy调用活动B,然后转到活动C,然后转到D
如果你想要回来你应该逐个完成并完成每个活动并在onActivityResult中设置结果。
如果你应该回到主要活动,请这样做:
//in MainActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = new Intent(MainActivity.this, ActivityB.class);
startActivityForResult(intent, REQUEST_CODE_MAIN_ACTIVITY);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == REQUEST_CODE_MAIN_ACTIVITY && resultCode == RESULT_OK){
//maybe get back to application that called you
}
}
//in Second activity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_B);
Intent intent = new Intent(ActivityB.this, ActivityC.class);
startActivityForResult(intent, REQUEST_CODE_ACTIVITY_B);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == REQUEST_CODE_ACTIVITY_B && resultCode == RESULT_OK){
setResult(RESULT_OK);
finish();
}
}
如果您可以直接从活动D调用第一个应用程序 您可以拨打第一个应用程序并关闭第二个应用程序
答案 1 :(得分:0)
从第一个Activity调用第二个Activity,使用startActivityForResult()方法
nohup shred -n 2 "device name" & >success.out 2>failure.out
如果要发回数据,请在第二个活动中:
Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, 1);
如果您不想返回数据:
Intent returnIntent = new Intent();
returnIntent.putExtra("result",result);
setResult(Activity.RESULT_OK,returnIntent);
finish();
现在,在第一个Activity类中,为onActivityResult()方法编写以下代码。
Intent returnIntent = new Intent();
setResult(Activity.RESULT_CANCELED, returnIntent);
finish();