Вы ничего не пропустили, поскольку, когда я тестирую с собственным намерением начать вашу деятельность, она работает хорошо, и OnNewIntent () вызывается при использовании SingleTask или SingleTop. Вот как я вызываю действие из другого проекта (я сделал это в собственном Android):
ComponentName component = new ComponentName("com.example.textHandlerDemo", "com.example.textHandlerDemo.TextHandlerActivity");
Intent intent = new Intent();
intent.setAction(Intent.ACTION_PROCESS_TEXT);
intent.setComponent(component);
startActivity(intent);
Я провел небольшое исследование и нашел кое-что, что может объяснить, почему OnNewIntent () никогда не запускается:
Согласно руководству ACTION_PROCESS_TEXT , в нем упоминается:
Вы можете использовать это как подсказку, чтобы предложить возможность вернуть измененный текст в приложение-отправитель, заменив выбранный текст. Это работает, поскольку ваше действие фактически было запущено с помощью startActivityForResult ()
Итак, когда вы щелкнете ярлык вашего приложения на панели инструментов выделения плавающего текста, Android запустит ваше действие, зарегистрированное с помощью ActionProcessText с startActivityForResult () , а при использовании startActivityForResult () ваше действие будет запущено как вспомогательное действие текущего действия (подразумевается из Android do c startActivityForResult ), то есть скажем, вместо перенаправления в ваше приложение, которое уже запущено, Android поместит вашу активность в стек текущего приложения.
Таким образом, ваша целевая активность по-прежнему будет вызываться из OnCreate (), поскольку она изолирована от вашего запущенное приложение.
Более того, панель инструментов для выделения плавающего текста используется для обеспечения быстрого взаимодействия с приложением для текстовых операций, таких как перевод, как указано в этом блоге , я не нашел никаких переключателей чтобы включить / отключить перенаправление в приложение, вам может потребоваться обработать намерение как в OnC reate () и OnNewIntent (), если вы используете LaunchMode.SingleTask или SingleTop.