Не напрямую.
Я вижу, что вы можете работать с этим ограничением двумя способами.
- Сделайте тост, чтобы сказать пользователю, чтобы он вернулся в ваше приложение.
- Используйте сенсорное наложение и добавьте его на экран, когда пользователь выполняет действие, которое направляет их в браузер. Когда этот оверлей коснется, ваше приложение будет «перезапущено».
Вы можете сделать простой кликабельный оверлей, например:
ImageView button = new ImageView(context); //this can be any View you want, even your own custom subclass
button.setImageResource(R.drawable.back);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//handle relaunching your app here
}
})
WindowManager.LayoutParams params = new WindowManager.LayoutParams();
params.height = 50; //height and width are in pixels
params.width = 50;
params.type = Build.VERSION.SDK_INT > Build.VERSION_CODES.N_MR1 ?
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY :
WindowManager.LayoutParams.TYPE_PHONE;
params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
params.gravity = Gravity.TOP | Gravity.START;
WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
manager.addView(button, params); //add the button to the screen
manager.removeView(button); //remove the button from the screen
Для этого вам понадобится SYSTEM_ALERT_WINDOW_PERMISSION: Как обрабатывать разрешение SYSTEM_ALERT_WINDOW, которое не предоставляется автоматически на некоторых устройствах перед зефиром
Чтобы перезапустить приложение, добавьте launchMode="singleInstance"
к тегу Activity в вашем AndroidManifest, а затем просто используйте startActivity()
для него из метода onClick()
.