StartActivity для результата для внешнего приложения не работает

Я готовлю 2 приложения, назовите их App-1 и App-2, используя App-1, я вызываю MainActivity App-2 из StartActivityForResult(). Пока это работает нормально, я могу вызвать App-2 MainActivity. Теперь для расчетов App-2 внутренне вызывает SecondActivity App-2. Итак, в этот момент приложение начинает ломаться. Не дожидаясь внутреннего ответа от SecondActivity, MainActivity неявно отвечает с помощью resultCode=0 и null в данных нашему приложению-1 (я даже не вызывал setResult()).

И я не могу напрямую ответить из MainActivity, обязательно мне нужно использовать SecondActivity из приложения-2, затем вернуться в приложение-2 MainActivity и ответить на приложение-1.

Помогите мне с этим. (поскольку мое приложение-2 представляет собой библиотеку .aar, включенную в приложение-1, я не могу отлаживать его). Ниже приведен код для него.

MainActivity.java — Приложение2

public static int flag = 0;
public static String dst = "Location - 23.029744, 72.541593";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);


    if(flag == 0)
    {
        Intent in = new Intent(this,SecondActivity.class);
        startActivity(in);
    }

}


@Override
protected void onResume() {
    super.onResume();


    if(flag != 0)
    {
        Intent inr = new Intent();
        inr.putExtra("latitude", dst);
        setResult(2, inr);
        flag = 0;
        finish();
    }


}

Вторая активность – приложение 2

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

} 
//Invoked by button click
public void btn_click(View v)
{
    MainActivity.dst = "Value obtained from API";
    MainActivity.flag = 1;
    Intent intent=new Intent(this,MainActivity.class);
    startActivity(intent);
    finish();
}

Активность вызывающего абонента – Приложение 1

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

}


public void btn_click(View v)
{
    Intent intent=new Intent(MainActivity.this,com.nestedif.sdk.MainActivity.class);
    startActivityForResult(intent, 2);// Activity is started with requestCode 2
}


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);
    // check if the request code is same as what is passed  here it is 2
    if(resultCode==2)
    {
        String message=data.getStringExtra("latitude");
        Toast.makeText(this, message, Toast.LENGTH_LONG).show();
    }
}

person 14mcei    schedule 28.12.2015    source источник
comment
@Vivek - добавил код   -  person 14mcei    schedule 28.12.2015
comment
что такое z в вашем коде??   -  person Vivek Mishra    schedule 28.12.2015
comment
@VivekMishra - он используется как флаг, который я использую, чтобы гарантировать, что setResult вызывается только после того, как SecondActivity выполнит свою работу. Позвольте мне переименовать его в флаг в коде.   -  person 14mcei    schedule 28.12.2015
comment
@14mcei, попробуйте сделать этот пример - stackoverflow.com/a/10961409/5123494   -  person Vladimir Markeev    schedule 28.12.2015
comment
@VladimirMarkeev На самом деле моя борьба заключается в том, чтобы вернуть результат, ссылка говорит, что я просто вызываю внешнюю активность приложения, что я могу сделать.   -  person 14mcei    schedule 28.12.2015