Commit graph

382 commits

Author SHA1 Message Date
Darcy Wong
67a43243b7 Start integrating lexical model installs to KMW 2019-03-26 16:22:03 +07:00
Darcy Wong
1472a76603
Merge pull request #1654 from keymanapp/android-stash-dependencies
[Android] Update dependencies
2019-03-08 09:46:10 +07:00
Darcy Wong
ae68c483a7 Update dependencies
* Update compile/target SDK version from 27 to 28
*  Migrate appcompat namespace (See https://developer.android.com/jetpack/androidx/migrate)
2019-03-06 16:20:26 +07:00
Darcy Wong
37f9050742 Get lexical model package from API
* Also update TC reporter of unit tests
2019-03-06 08:51:33 +07:00
Darcy Wong
19f3e880e9 Address review comments 2019-03-05 15:11:29 +07:00
Darcy Wong
82d9066e47 Change UI feedback from "lexical model" to "predictive text" 2019-03-04 15:07:41 +07:00
Darcy Wong
f9210a0fde Cleanup 2019-02-28 22:01:33 +07:00
Darcy Wong
5bb2846130 Simplify PackageProcessor.processKMP()
Change signature since the kmp will always be previously extracted in a temp location.
* from processKMP(File path, boolean force)
* to processKMP(File path, File tempPath, String key)
2019-02-28 20:36:41 +07:00
Darcy Wong
d8ca11f497 wip on refactoring 2019-02-28 15:31:50 +07:00
Darcy Wong
b568077bf6 Fix duplicate "keyboard" / "model" string on install 2019-02-27 23:13:04 +07:00
Darcy Wong
0d32390346 More cleanup
* Fix logical error in cleanup()
* Check number of installed models in unit test
2019-02-27 22:56:57 +07:00
Darcy Wong
2fc30343f4 Add more to processLexicalEntry() 2019-02-27 20:33:35 +07:00
Darcy Wong
79e2dc8cea Update install screen for .model.kmp 2019-02-27 14:26:40 +07:00
Darcy Wong
ba86d1b84d Extend PackageProcessor to handle .model.kmp
* Create LexicalModelPackageProcessor to handle lexical model packages
* Cleanup PackagePrcessor so less utility methods unzip/parse
* Update FileUtils to handle .model.kmp extension
2019-02-27 12:01:36 +07:00
Darcy Wong
f16fd9cf46 Show error dialog when keyboard fails to download 2019-02-06 10:01:30 -06:00
Darcy Wong
c1caaf3ee1 Fix "Get Started" status for default keyboard 2019-01-09 14:43:06 +07:00
Darcy Wong
a4249e5342
Merge pull request #1378 from keymanapp/android-tablet-layout
[Android] Tweak tablet layout
2018-12-05 07:45:00 +07:00
Darcy Wong
2c75d749ad Fix tablet layout
* lengthen label size
* always show menu items for tablet layout
2018-12-04 13:19:19 +07:00
Darcy Wong
481eda7d6f Update FileUtils to handle mixed-case file extensions 2018-11-21 14:27:18 +07:00
Darcy Wong
04f37b4bff Add one more String.format 2018-10-24 14:28:12 +07:00
Darcy Wong
1f3cd5268b Tidy up more strings 2018-10-24 10:44:20 +07:00
Darcy Wong
8ce4b4f30b Consolidate UI strings to strings.xml 2018-10-24 07:55:51 +07:00
Darcy Wong
c2fe6197db Change system keyboard to "numeric" layer for numeric text fields
Fixes #289

When changing to a digit/phone number text field, set the OSK to "numeric" layer if it exists. 

This will occur after `resetContext()`.
2018-09-27 13:14:25 +07:00
Darcy Wong
c3fce1d909 Fix globe button when pausing WebBrowser
This is a follow-on fix of #913

The same `webView.pauseTimers()` that was disabling the globe button in system keyboards is also impacting when the WebBrowser is paused.
2018-09-26 09:32:14 +07:00
Darcy Wong
544a58c151 Add Material Design 2018-09-19 13:46:03 +07:00
Darcy Wong
6712661c71 Disable text portion of splash screen
Per review comment, don't delay app startup  just to display the text fields of the splash screen.
2018-08-30 16:25:31 +07:00
Darcy Wong
ff4066e374 Add splash screen
This addresses the Android platform of #1069

* Show product logos on app start
* Then show text (version and copyright dates)
2018-08-30 15:07:59 +07:00
Darcy Wong
39fe506d8c Resolve review comments
* Clean up unnecessary `KMKey_` keys
* Update MainActivity to only download ad-hoc KMP packages.
2018-08-27 11:17:25 +07:00
Darcy Wong
74ca0d09d0 Merge remote-tracking branch 'origin/master' into android-remove-adhoc-json 2018-08-27 07:43:04 +07:00
Darcy Wong
bb72f4406c Remove ad-hoc distribution of keyboards via keyman:// protocol
Addresses Android platform for #538
2018-08-16 22:29:14 -05:00
Darcy Wong
1c9775e287 Fix crashes when input connection or package name is null
This cherry picks the commits from #1103 onto master
2018-08-15 22:05:42 -05:00
darcywong00
931bcdd5ca Consolidate "Info" views
Fixes #960

Previously, the InfoActivity was displaying the app version in one view, and launching the help content in another Activity.
2018-06-10 06:58:58 +07:00
darcywong00
d4e927ac4a Make distinct webView IDs 2018-05-09 14:03:42 +07:00
darcywong00
44aec2944b Start cleaning up console log
Fixes #748

* Remove nearly all uses of `Log.d()`
* Disable `window.console.log()` calls in `keyboard.html`
2018-05-08 10:50:15 +07:00
darcywong00
c593a45e7d Update string handling for PackageProcessor
Fixes #819

* If package version undefined, use "1.0"
* Keyman Developer won't allow undefined package name, but just in case return package ID from the filename
* Check for null before String.toLowerCase()
* Added package processor test for undefined version
2018-05-07 14:47:11 +07:00
darcywong00
cfdb2b6591 Hide system OSK when resuming Keyman app
This handles all transitions where an external app/dialog using the system OSK returns to the Keyman app such as resuming:
* from WebBrowserActivity
* from Android Oreo's "Add to dictionary" dialog
2018-04-24 13:41:23 +07:00
darcywong00
0d2c951265 Tweak back button for WebBrowserActivity
This is a follow-on to #220 that fixed  2 OSK that were appearing when exiting WebBrowserActivity.

* If navigation is possible, backButton navigates back.
* Hide the system OSK so returning to Keyman app won't have 2 keyboards visible

Also ignore build_file_checksums file that Android Gradle 3.1 generates.
2018-04-11 21:54:04 +07:00
darcywong00
6152b5e467 Remove test button that forced crashes
Now that Crashlytics is verified to run on nightly Release builds, the test button to force crashes can be removed.
2018-02-16 11:14:12 +07:00
darcywong00
067b43cfd3 Remove Answers
Removing Answers because of the setup involved with Fabric IO. Keeping this feature to Crashlytics
2018-02-14 20:48:26 +07:00
darcywong00
9cd8eed976 Tweak Crashlytics / Firebase
Using Crashlytics for crash reporting.
Trying Firebase and Crashlytics.Answers for logging events (like km_add_keyboard) for analytics

Firebase events don't persist between app launches
2018-02-14 19:37:21 +07:00
darcywong00
84ddf0c990 Add Firebase Crashlytics for crash reporting
While legacy stable kmapro releases have analytics on the Google Play Console, Google recommends [Firebase Crashlytics](https://firebase.google.com/docs/crash/) for crash reporting.
This requires a `google-services.json` file for gradle builds. A sanitized version intended for developers/Debug variant is checked into the repo, and is associated with an appliction ID `com.tavultesoft.kmapro.debug`. The one for `com.tavultesoft.kmapro` releaeses will go on the CI servers.

Breaking change: Consuming apps of KMEA will be responsible for including the Firebase dependencies. At the moment, only kmapro has been updated.
TBD: Registering KMSamples and the Test Harness with Firebase for their own `google.services.json` file.

- Log addKeyboard as an analytic event 
- Update kmapro build.sh script to allow debug-only variant
- Add info to history.md and README.md
- Add Gradle setting so CI server can use production `google-services.json` file
- Temporarily add a menu button to force a crash. This is engineering code that will be removed once analytics in a Release build is confirmed.
2018-02-14 19:37:21 +07:00
darcywong00
4d51b1a666 Address review comments
Refactor duplicate code in `useLocalKMP()`
2018-02-06 11:20:19 +07:00
darcywong00
f85ef3e3e4 Improve UX for KMP distribution
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.
2018-02-05 16:36:12 +07:00
darcywong00
913e58a60a Request storage permissions at runtime to install local KMP file
Starting with Android 6.0 Marshmallow (API 23), apps need to request permissions for "dangerous" (Storage) access at runtime. Previous versions of Android granted permissions at installation. Normal permissions declared in the manifest are granted automatically.

This doesn't affect Keyman running on older versions of Android

[Reference](https://developer.android.com/training/permissions/requesting.html)

[Runtime Permissions Sample](https://github.com/googlesamples/android-RuntimePermissions) provided by Google
2018-02-02 08:28:15 +07:00
darcywong00
9211f66c36 Cleanup to address review comments 2018-01-31 10:57:33 +07:00
darcywong00
09e0f4aa98 Merge branch 'android-peer-distribution'
Conflicts:
	android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java
2018-01-29 18:18:17 +07:00
darcywong00
61bf0410a8 Deprecate non-direct links for ad-hoc keyboards 2018-01-29 16:25:10 +07:00
darcywong00
9bc7b43493 Handle kmp files passed from Android DownloadManager
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.
2018-01-28 23:04:14 +07:00
darcywong00
e4c88ed09b Try to refine intent filters for file:// and content:// 2018-01-28 23:01:40 +07:00
darcywong00
a7fa26e472 Add Toast notification when File access to KMP denied 2018-01-28 23:01:12 +07:00