Hi!
Joseba here, from the Oppia dev team I’ll try to answer your questions from the technical side (I hope it doesn’t get too lengthy…).
But first of all, as a general response, I agree with you that this level of integration requires the use of a more specific Android Intent than the weblink approach. With this I mean creating a custom Intent filter that serves as an entry point for external apps, that can pass arguments in a deeper level, in opposition to the broad BROWSABLE
filter currently used in the weblink approach.
With the weblink approach, they would get redirected to the server page, and from there they have the option to download the app from Google play. Using the more specific intent approach, the CHT app can check beforehand if there is any app installed that can manage the intent, and show a message within the app context before trying to redirect them.
Currently, if the user does not have an activity that contains that digest the app simply shows a message informing of that. I think that would be a nice feature to add! I’ll add it to the issue list for consideration.
For the weblink use case, if the user does not have the app installed, the link will be opened in the browser. If there is no network connection available, the page won’t be loaded, so there is no chance for even redirecting to Google play. I think the other scenarios are covered in the previous answers, but let me know if there is something else that you feel is missing.
Using a specific intent, the app can send back information about the outcome of the action. What the specific information is would need to be defined.
Yes, with the weblink intent there is no possibility to retrieve the outcome of the action… even the target app (Oppia in this case) doesn’t have any actual knowledge of where the intent is coming from.
For this one, I’ll point you to the Oppia doc’s for content creation, I think there it’s covered mostly everything for the tech part.
Sure! You can configure course categories from the Oppia server.
For the questions #3 and #5, that involve more the management/implementation side, I’ll let @alex answer.