android что такое событие после вызова стороннего приложения?

#android #android-intent

#Android #android-намерение

Вопрос:

Я вроде как новичок в Android, я просто хочу спросить Android, что происходит после вызова стороннего приложения?

например, у меня есть следующий код, чтобы открыть Adobe Reader для чтения моего файла с SD-карты:

 File fileToShow = new File(passedFileToShow);
Intent nextActivity = new Intent();
nextActivity.setAction(android.content.Intent.ACTION_VIEW);
nextActivity.setDataAndType(Uri.fromFile(fileToShow), "application/pdf");
nextActivity.putExtra("itemName", itemName );
startActivityForResult(nextActivity, 0);
 

после открытия Adobe Reader и завершения чтения файла, как мне вызвать событие после нажатия кнопки возврата устройства?

onBackPressed не работает, onActivityResult тоже не работает..

большое спасибо за любую помощь! 🙂

Ответ №1:

если вы нажали кнопку «Назад», он вызовет onRestart (также он должен вызвать onActivityResult с помощью resutlCode * Activity .RESULT_CANCELED*)

Вы можете увидеть весь жизненный цикл активности здесь

Комментарии:

1. Вау, onRestart () сработал для меня, большое вам спасибо @SeRPRo! 🙂

Ответ №2:

Что я хотел бы сделать, так это определить логическое значение, которое отслеживает, открывал ли пользователь adobe.

  boolean userOpenedAdobe = false;
 

Затем установите для него значение true непосредственно перед открытием PDF-файла:

 File fileToShow = new File(passedFileToShow);
Intent nextActivity = new Intent();
nextActivity.setAction(android.content.Intent.ACTION_VIEW);
nextActivity.setDataAndType(Uri.fromFile(fileToShow), "application/pdf");
nextActivity.putExtra("itemName", itemName );
userOpenedAdobe = true;
startActivityForResult(nextActivity, 0);
 

Затем вы можете проверить логическое значение в onResume() и что-то сделать. Просто не забудьте потом вернуть ему значение false:

 protected void onResume() {
    super.onResume();
    if (userOpenedAdobe) {
        // do something
    }
    userOpenedAdobe = false;
}
 

Комментарии:

1. onResume был вызван раньше (до запуска Adobe Reader)… Я использовал onRestart, в любом случае, спасибо за ваш ответ @SBerg413!