#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!