* Don't log `MalformedURLExceptions` since it may be a query
* URLEncode the string if it seems to be a URL
* Set `android:usesCleartextTraffic="true"` which allows http:// traffic (API 23+)
Following the reference from https://developer.android.com/training/app-links/verify-site-associations
> When `android:autoVerify="true"` is present on any one of your intent filters, installing your app on devices with Android 6.0 and higher causes the system to attempt to verify all hosts associated with the URLs in any of your app's intent filters.
* Use URI to handle query parameters instead of strings
Also in resuming work on the PR
* Change the staging host to keyman-staging.com
* Move helper for determining host
Address some review comments:
* Update intent filter to use /keyboards/install (/go/packge/download commented out)
* Add some test cases to for testing Keyman install link
* Add intent to handle download links from current live site: https://keyman.com/keyboard/download/
* Fix parsing of bcp47 query
* Only use the path for determining filename from packageID
*
Revert intentional crash from #2778
Now that the call stack in Sentry is tested on Release build
http://sentry.keyman.com/organizations/keyman/issues/61/?project=7
The temporary menu to generate the intentional crash can be removed.
Also disable monitoring Application Not Responding (ANR)
Starts to address #2039
Move FileProvider back to Keyman manifest and revert authority.
Added Toast notification if 3rd party app doesn't define FileProvider. (info pages fail to properly load)
For keyboards installed via keyboard packages, use the welcome.htm if it exists for keyboard information
- Update PackageProcessorTest to include CustomHelpLink info
- Renamed Welcome.htm to welcome.htm in test_resources/**/gff_amh_7_test_json.kmp.
Due to Android's limited set of regex characters for intent actions, any local `.kmp*` file triggers the Keyman app. (e.g. `.kmp` is treated the same as `.kmpo`). Added Toast notifications for when the intent inadvertently triggers the Keyman app.
Also updated PackageActivity to display the package name when no `welcome.htm` file exists.
Intents from the DownloadManager use paths like `/document/number/` so additional code needed to determine the kmp filename.
protocols also separated in switch statement for maintainability.
Add intent-filter and storage permissions so Keyman app will process keyman://, http://, https:// protocols, along with local KMP file. Also add external storage permission