There are several ways to inject text into edit fields. Some of them requires use of the device's keyboard and some of them do not.
For example: Text objects function, such as: Button.click.text, Edit.set.text, Select.text etc. Or by using the Type text function Text Entry.
The selected function depends on the user automation knowledge and skills in addition to the script's needs. There is no best practice to inject text into a device. a lot of parameters are effecting the selection of a suitable function.
The recommendation is to use a function which the user feel most comfortable to use. For example: Edit.set.text function can be use in some cases, although there are scenarios in which it could not be usable. In this case another methods should be selected.
Edit set funcation - example of how to inject a text into the 'username' field by using Edit set function
Type text function - Example of how to inject a text into the 'username' field by using Type.text function. Note: Using Type.text function requires to focus the edit field before executing the function (By Button.click or Select commands).