From 0bc24705357a02a1a09f2b116c13c0a70fa5e21c Mon Sep 17 00:00:00 2001 From: Darcy Wong Date: Fri, 23 Aug 2019 10:22:07 +0700 Subject: [PATCH 1/7] Use Storage Access Framework to browse for local .kmp files Addresses: #629 Add menu option for user to launch a system file browser to navigate to local .kmp files. Reference: http://www.androiddocs.com/guide/topics/providers/document-provider.html --- .../com/tavultesoft/kmapro/MainActivity.java | 23 +++++++++++++++++- .../main/res/drawable-hdpi/ic_folder_open.png | Bin 0 -> 138 bytes .../main/res/drawable-mdpi/ic_folder_open.png | Bin 0 -> 138 bytes .../res/drawable-xhdpi/ic_folder_open.png | Bin 0 -> 183 bytes .../res/drawable-xxhdpi/ic_folder_open.png | Bin 0 -> 283 bytes .../res/drawable-xxxhdpi/ic_folder_open.png | Bin 0 -> 313 bytes .../kMAPro/src/main/res/menu-land/main.xml | 8 +++++- .../kMAPro/src/main/res/menu-sw600dp/main.xml | 8 +++++- .../KMAPro/kMAPro/src/main/res/menu/main.xml | 5 ++++ .../kMAPro/src/main/res/values/strings.xml | 1 + 10 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 android/KMAPro/kMAPro/src/main/res/drawable-hdpi/ic_folder_open.png create mode 100644 android/KMAPro/kMAPro/src/main/res/drawable-mdpi/ic_folder_open.png create mode 100644 android/KMAPro/kMAPro/src/main/res/drawable-xhdpi/ic_folder_open.png create mode 100644 android/KMAPro/kMAPro/src/main/res/drawable-xxhdpi/ic_folder_open.png create mode 100644 android/KMAPro/kMAPro/src/main/res/drawable-xxxhdpi/ic_folder_open.png diff --git a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java index d5219d4868..1d4a2bd978 100644 --- a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java +++ b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java @@ -79,6 +79,7 @@ public class MainActivity extends AppCompatActivity implements OnKeyboardEventLi // Fields used for installing kmp packages private static final int PERMISSION_REQUEST_STORAGE = 0; + private static final int READ_REQUEST_CODE = 42; Uri data; private static final String TAG = "MainActivity"; @@ -181,6 +182,13 @@ public class MainActivity extends AppCompatActivity implements OnKeyboardEventLi if (resultCode != RESULT_OK) { checkGetStarted(); return; + } else if (requestCode == READ_REQUEST_CODE) { + // Handle kmp file selected from file browser + if (returnIntent != null) { + String kmpFilename = returnIntent.getDataString(); + Uri data = Uri.parse(kmpFilename); + useLocalKMP(data); + } } else { boolean didFail = false; ClipData userdata = returnIntent.getClipData(); @@ -370,6 +378,9 @@ public class MainActivity extends AppCompatActivity implements OnKeyboardEventLi case R.id.action_share: showShareDialog(); return true; + case R.id.action_file_browser: + showFileBrowser(); + return true; case R.id.action_web: showWebBrowser(); return true; @@ -702,7 +713,8 @@ public class MainActivity extends AppCompatActivity implements OnKeyboardEventLi FileUtils.copy(inputFile, new FileOutputStream(cacheKMPFile)); } else { - String noKeyboardsInstalledMessage = " is not a valid keyboard package file.\nNo keyboards were installed."; + String noKeyboardsInstalledMessage = " is not a valid Keyman package file.\n" + + "No keyboards/dictionaries were installed."; Toast.makeText(getApplicationContext(), filename + noKeyboardsInstalledMessage, Toast.LENGTH_LONG).show(); } @@ -728,6 +740,15 @@ public class MainActivity extends AppCompatActivity implements OnKeyboardEventLi startActivity(getStartedIntent); } + // Launch System file browser for user to navigate to local .kmp files + private void showFileBrowser() { + Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); + intent.addCategory(Intent.CATEGORY_OPENABLE); + // Unfortunately, we can't filter for a "kmp" mime type + intent.setType("*/*"); + startActivityForResult(intent, READ_REQUEST_CODE); + } + private void showSettings() { Intent settingsIntent = new Intent(this, KeymanSettingsActivity.class); startActivity(settingsIntent); diff --git a/android/KMAPro/kMAPro/src/main/res/drawable-hdpi/ic_folder_open.png b/android/KMAPro/kMAPro/src/main/res/drawable-hdpi/ic_folder_open.png new file mode 100644 index 0000000000000000000000000000000000000000..4f90c63104aba086b4dc5c6a69a7720fc5c262b9 GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8K8pr?ytNCo5D%Nuzc3`CeOMhm#+ z9ND4bJws08z%M74Pdn@9dIoR5bn&cNTv<|$*NV0vQPt$;Fy_uU)|bpLG8>s#KP{}^ lTOV=e+)_958Lge(>`jQFBkv- literal 0 HcmV?d00001 diff --git a/android/KMAPro/kMAPro/src/main/res/drawable-mdpi/ic_folder_open.png b/android/KMAPro/kMAPro/src/main/res/drawable-mdpi/ic_folder_open.png new file mode 100644 index 0000000000000000000000000000000000000000..4f90c63104aba086b4dc5c6a69a7720fc5c262b9 GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8K8pr?ytNCo5D%Nuzc3`CeOMhm#+ z9ND4bJws08z%M74Pdn@9dIoR5bn&cNTv<|$*NV0vQPt$;Fy_uU)|bpLG8>s#KP{}^ lTOV=e+)_958Lge(>`jQFBkv- literal 0 HcmV?d00001 diff --git a/android/KMAPro/kMAPro/src/main/res/drawable-xhdpi/ic_folder_open.png b/android/KMAPro/kMAPro/src/main/res/drawable-xhdpi/ic_folder_open.png new file mode 100644 index 0000000000000000000000000000000000000000..f55b92e9ba4044323a87a369887b9f0726730b45 GIT binary patch literal 183 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}b0DI!_nJkP61PR}J|N83?#ste^ED zxkzEj1Q{I{6;*=}5wVRLdu}iIdHJ_zo>=(PJDu9)S8mKa$CkGuPN&dOV{$}*-bV+; z+cPy~zPKbtYwm2Av8iz_Z^<{se}WaI%xpX-8XE6Q8f-|H|7$5C@pILNMGJI!3S4}0 h80Q;bJ8%8`p3rRxzV*60UIAUg;OXk;vd$@?2>^lzLx=zX literal 0 HcmV?d00001 diff --git a/android/KMAPro/kMAPro/src/main/res/drawable-xxhdpi/ic_folder_open.png b/android/KMAPro/kMAPro/src/main/res/drawable-xxhdpi/ic_folder_open.png new file mode 100644 index 0000000000000000000000000000000000000000..1eb3365e090b4bdc3c2837b4815d93b0e68706ad GIT binary patch literal 283 zcmeAS@N?(olHy`uVBq!ia0vp^IUvlz0wh)Q=eq%^N1iT@Ar*{oZ|%)xN)&LtD8BJZ z!V@9E4z3t^`%Mn(SaZ$zIun`g+@9~_@-w>VGD*dAl8SELTxY$R!Q9^_Km2v>zS5-y zTfR15?Jo0JYIR9(<-9GHS0{%7saIaB*TIQK^XGGFm&I*3o_F(0OX#}DuPvcvv5Cvq zZKw{9Xl&eDnUIjbijxN)ICGsrLPFxkov(tQ{|IhKo|pGua6|6Ayi>Uq*Yd+E7y7Pi w-n{QqQgE5&Q@aNzEz)L(f?Vo(>Cit$pWi%PUFdcK`qY literal 0 HcmV?d00001 diff --git a/android/KMAPro/kMAPro/src/main/res/drawable-xxxhdpi/ic_folder_open.png b/android/KMAPro/kMAPro/src/main/res/drawable-xxxhdpi/ic_folder_open.png new file mode 100644 index 0000000000000000000000000000000000000000..e6faa991f402255879a2c6dbabfcbc852095eda8 GIT binary patch literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD0wg^q?%&M7z{ud~;uuoF`1a;O-`5TzZVxwi zS391V@*~Q@bAzkl1gQv>BFQ&N56&)S&_9;;*!q%XJ?s1u)7b~lfI!YgVP;|DjfMX` z0*-69uFzLs_;~ILef@{63b#~k0y?H~o@cpe^sqT&_6N@`zB`0hni(5j*t~0|$BsiD z)1?FMx30@|FxbMU@gWcK%#+xQSrfhP640{P|>q%_Pdr}Y0$pfcBMi2Y8BVSl2-RHlVz-PB0`V1 zdh9Ug+c3=_Xp-#tPUhLKEQ=q{d+=~iQOv!4GeO{{zHV=V!jGfEw!k1^@O1TaS?83{ F1ORZ`e_#Lr literal 0 HcmV?d00001 diff --git a/android/KMAPro/kMAPro/src/main/res/menu-land/main.xml b/android/KMAPro/kMAPro/src/main/res/menu-land/main.xml index 892a1f24ec..1b68d57e85 100644 --- a/android/KMAPro/kMAPro/src/main/res/menu-land/main.xml +++ b/android/KMAPro/kMAPro/src/main/res/menu-land/main.xml @@ -14,7 +14,13 @@ app:showAsAction="always" android:title="@string/action_web" android:icon="@drawable/ic_light_action_web" /> - + + + - + + + + + Share Web Browser + File Browser Text Size More Clear Text From d6bdcdd545798d931ff39015ddf0c6a2901627a1 Mon Sep 17 00:00:00 2001 From: Darcy Wong Date: Tue, 27 Aug 2019 16:51:28 +0700 Subject: [PATCH 2/7] Start moving menu option to Settings Activity --- .../kmapro/KeymanSettingsFragment.java | 32 +++++++++++++++- .../com/tavultesoft/kmapro/MainActivity.java | 38 +++++++++---------- .../layout/preference_file_browser_layout.xml | 5 +++ .../kMAPro/src/main/res/menu-land/main.xml | 6 --- .../kMAPro/src/main/res/menu-sw600dp/main.xml | 6 --- .../KMAPro/kMAPro/src/main/res/menu/main.xml | 5 --- .../KMEA/app/src/main/res/values/strings.xml | 1 + 7 files changed, 56 insertions(+), 37 deletions(-) create mode 100644 android/KMAPro/kMAPro/src/main/res/layout/preference_file_browser_layout.xml diff --git a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/KeymanSettingsFragment.java b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/KeymanSettingsFragment.java index ccf851b0fa..259733c323 100644 --- a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/KeymanSettingsFragment.java +++ b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/KeymanSettingsFragment.java @@ -2,6 +2,7 @@ package com.tavultesoft.kmapro; import android.content.Context; import android.content.Intent; +import android.net.Uri; import android.os.Bundle; import android.provider.Settings; import android.view.inputmethod.InputMethodManager; @@ -19,7 +20,7 @@ public class KeymanSettingsFragment extends PreferenceFragmentCompat { private static final String TAG = "SettingsFragment"; private static Context context; - private Preference languagesPreference; + private Preference languagesPreference, addKeyboardFromDevice; private CheckBoxPreference setSystemKeyboardPreference; private CheckBoxPreference setDefaultKeyboardPreference; @@ -40,6 +41,23 @@ public class KeymanSettingsFragment extends PreferenceFragmentCompat { languagesIntent.putExtra(KMManager.KMKey_DisplayKeyboardSwitcher, false); languagesPreference.setIntent(languagesIntent); + // Launch System file browser for user to navigate to local .kmp files + // Using generic "Add keyboard" title even though this can also install lexical model .kmp's. + addKeyboardFromDevice = new Preference(context); + addKeyboardFromDevice.setTitle(getString(R.string.title_add_keyboard_from_device)); + addKeyboardFromDevice.setWidgetLayoutResource(R.layout.preference_file_browser_layout); + addKeyboardFromDevice.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { + @Override + public boolean onPreferenceClick(Preference preference) { + Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); + intent.addCategory(Intent.CATEGORY_OPENABLE); + // Unfortunately, we can't filter for a "kmp" mime type + intent.setType("*/*"); + startActivityForResult(intent, MainActivity.READ_REQUEST_CODE); + return false; + } + }); + /* Automatically does the following: SharedPreferences.Editor editor = prefs.edit(); @@ -92,6 +110,8 @@ public class KeymanSettingsFragment extends PreferenceFragmentCompat { setDefaultKeyboardPreference.setOnPreferenceChangeListener(checkBlocker); screen.addPreference(languagesPreference); + screen.addPreference(addKeyboardFromDevice); + screen.addPreference(setSystemKeyboardPreference); screen.addPreference(setDefaultKeyboardPreference); @@ -132,6 +152,16 @@ public class KeymanSettingsFragment extends PreferenceFragmentCompat { // .update() on our behalf. } + + public void onActivityResult(int requestCode, int resultCode, Intent returnIntent) { + // Handle kmp file selected from file browser + if ((requestCode == MainActivity.READ_REQUEST_CODE) && (returnIntent != null)) { + String kmpFilename = returnIntent.getDataString(); + Uri data = Uri.parse(kmpFilename); + MainActivity.useLocalKMP(this.getContext(), data); + } + } + public void update() { setSystemKeyboardPreference.setChecked(SystemIMESettings.isEnabledAsSystemKB(context)); setDefaultKeyboardPreference.setChecked(SystemIMESettings.isDefaultKB(context)); diff --git a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java index 1d4a2bd978..f836386a04 100644 --- a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java +++ b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java @@ -75,11 +75,12 @@ import android.widget.SeekBar; import android.widget.Toast; public class MainActivity extends AppCompatActivity implements OnKeyboardEventListener, OnKeyboardDownloadEventListener, - ActivityCompat.OnRequestPermissionsResultCallback { + ActivityCompat.OnRequestPermissionsResultCallback { + public static Context context; // Fields used for installing kmp packages private static final int PERMISSION_REQUEST_STORAGE = 0; - private static final int READ_REQUEST_CODE = 42; + public static final int READ_REQUEST_CODE = 42; Uri data; private static final String TAG = "MainActivity"; @@ -133,6 +134,7 @@ public class MainActivity extends AppCompatActivity implements OnKeyboardEventLi protected void onCreate(Bundle savedInstanceState) { setTheme(R.style.AppTheme); super.onCreate(savedInstanceState); + context = this; resultReceiver = new DownloadResultReceiver(new Handler()); mFirebaseAnalytics = FirebaseAnalytics.getInstance(this); @@ -184,10 +186,10 @@ public class MainActivity extends AppCompatActivity implements OnKeyboardEventLi return; } else if (requestCode == READ_REQUEST_CODE) { // Handle kmp file selected from file browser - if (returnIntent != null) { - String kmpFilename = returnIntent.getDataString(); + if (returnIntent != null && returnIntent.hasExtra("kmpFilename")) { + String kmpFilename = returnIntent.getExtras().getString("kmpFilename"); Uri data = Uri.parse(kmpFilename); - useLocalKMP(data); + useLocalKMP(context, data); } } else { boolean didFail = false; @@ -378,9 +380,6 @@ public class MainActivity extends AppCompatActivity implements OnKeyboardEventLi case R.id.action_share: showShareDialog(); return true; - case R.id.action_file_browser: - showFileBrowser(); - return true; case R.id.action_web: showWebBrowser(); return true; @@ -630,7 +629,7 @@ public class MainActivity extends AppCompatActivity implements OnKeyboardEventLi // Request for storage permission if (grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { // Permission has been granted. Resume task needing this permission - useLocalKMP(data); + useLocalKMP(context, data); } else { // Permission request denied String message = "Storage permission request was denied. Unable to install keyboard package"; @@ -645,14 +644,14 @@ public class MainActivity extends AppCompatActivity implements OnKeyboardEventLi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) { - useLocalKMP(data); + useLocalKMP(context, data); } else { // Permission is missing and must be requested requestStoragePermission(); } } else { // Permission automatically granted on older Android versions - useLocalKMP(data); + useLocalKMP(context, data); } } @@ -675,7 +674,8 @@ public class MainActivity extends AppCompatActivity implements OnKeyboardEventLi } } - private void useLocalKMP(Uri data) { + // TODO: Move this to KMEA during Keyman 13.0 refactoring + public static void useLocalKMP(Context context, Uri data) { String filename = ""; String cacheKMPFilename = ""; File cacheKMPFile = null; @@ -686,13 +686,13 @@ public class MainActivity extends AppCompatActivity implements OnKeyboardEventLi switch (data.getScheme().toLowerCase()) { case "content": // DownloadManager passes a path "/document/number" so we need to extract the .kmp filename - Cursor cursor = getContentResolver().query(data, null, null, null, null); + Cursor cursor = context.getContentResolver().query(data, null, null, null, null); cursor.moveToFirst(); int nameIndex = cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME); filename = cursor.getString(nameIndex); isKMP = FileUtils.hasKeymanPackageExtension(filename); cacheKMPFilename = filename; - inputFile = getContentResolver().openInputStream(data); + inputFile = context.getContentResolver().openInputStream(data); break; case "file": @@ -706,7 +706,7 @@ public class MainActivity extends AppCompatActivity implements OnKeyboardEventLi if (isKMP) { // Copy KMP to app cache - cacheKMPFile = new File(MainActivity.this.getCacheDir().toString(), cacheKMPFilename); + cacheKMPFile = new File(context.getCacheDir().toString(), cacheKMPFilename); if (cacheKMPFile.exists()) { cacheKMPFile.delete(); } @@ -715,13 +715,13 @@ public class MainActivity extends AppCompatActivity implements OnKeyboardEventLi } else { String noKeyboardsInstalledMessage = " is not a valid Keyman package file.\n" + "No keyboards/dictionaries were installed."; - Toast.makeText(getApplicationContext(), + Toast.makeText(context, filename + noKeyboardsInstalledMessage, Toast.LENGTH_LONG).show(); } } catch (Exception e) { String message = "Access denied to " + filename + ".\nCheck Android Settings --> Apps --> Keyman to grant storage permissions"; - Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show(); + Toast.makeText(context, message, Toast.LENGTH_LONG).show(); Log.e(TAG, "Unable to copy " + filename + " to app cache"); return; } @@ -729,9 +729,9 @@ public class MainActivity extends AppCompatActivity implements OnKeyboardEventLi if (cacheKMPFile != null) { bundle.putString("kmpFile", cacheKMPFile.getAbsolutePath()); - Intent packageIntent = new Intent(getApplicationContext(), PackageActivity.class); + Intent packageIntent = new Intent(context, PackageActivity.class); packageIntent.putExtras(bundle); - startActivity(packageIntent); + context.startActivity(packageIntent); } } diff --git a/android/KMAPro/kMAPro/src/main/res/layout/preference_file_browser_layout.xml b/android/KMAPro/kMAPro/src/main/res/layout/preference_file_browser_layout.xml new file mode 100644 index 0000000000..9483748278 --- /dev/null +++ b/android/KMAPro/kMAPro/src/main/res/layout/preference_file_browser_layout.xml @@ -0,0 +1,5 @@ + + diff --git a/android/KMAPro/kMAPro/src/main/res/menu-land/main.xml b/android/KMAPro/kMAPro/src/main/res/menu-land/main.xml index 1b68d57e85..6cb3ec10a3 100644 --- a/android/KMAPro/kMAPro/src/main/res/menu-land/main.xml +++ b/android/KMAPro/kMAPro/src/main/res/menu-land/main.xml @@ -15,12 +15,6 @@ android:title="@string/action_web" android:icon="@drawable/ic_light_action_web" /> - - - - - - Keyboard Add New Language Add New Keyboard + Add Keyboard from Device Installed Languages %s Settings From 118f491e13cac46b8bb5d9d640793ab45f17695b Mon Sep 17 00:00:00 2001 From: Darcy Wong Date: Wed, 28 Aug 2019 10:13:04 +0700 Subject: [PATCH 3/7] Clean up MainActivity --- android/KMAPro/kMAPro/src/main/AndroidManifest.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/KMAPro/kMAPro/src/main/AndroidManifest.xml b/android/KMAPro/kMAPro/src/main/AndroidManifest.xml index 9052f4bbd9..678662c5a0 100644 --- a/android/KMAPro/kMAPro/src/main/AndroidManifest.xml +++ b/android/KMAPro/kMAPro/src/main/AndroidManifest.xml @@ -123,7 +123,7 @@ impossible to match such a type except by using a global wildcard. --> - + From 734b656211dae2e5d4e0ec9f3755a125b45a5526 Mon Sep 17 00:00:00 2001 From: Darcy Wong Date: Wed, 28 Aug 2019 10:26:37 +0700 Subject: [PATCH 4/7] Clean up Main Activity (part 2) Added wrong file in previous commit --- android/KMAPro/kMAPro/src/main/AndroidManifest.xml | 2 +- .../src/main/java/com/tavultesoft/kmapro/MainActivity.java | 7 ------- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/android/KMAPro/kMAPro/src/main/AndroidManifest.xml b/android/KMAPro/kMAPro/src/main/AndroidManifest.xml index 678662c5a0..9052f4bbd9 100644 --- a/android/KMAPro/kMAPro/src/main/AndroidManifest.xml +++ b/android/KMAPro/kMAPro/src/main/AndroidManifest.xml @@ -123,7 +123,7 @@ impossible to match such a type except by using a global wildcard. --> - + diff --git a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java index f836386a04..f3c3c56a05 100644 --- a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java +++ b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java @@ -184,13 +184,6 @@ public class MainActivity extends AppCompatActivity implements OnKeyboardEventLi if (resultCode != RESULT_OK) { checkGetStarted(); return; - } else if (requestCode == READ_REQUEST_CODE) { - // Handle kmp file selected from file browser - if (returnIntent != null && returnIntent.hasExtra("kmpFilename")) { - String kmpFilename = returnIntent.getExtras().getString("kmpFilename"); - Uri data = Uri.parse(kmpFilename); - useLocalKMP(context, data); - } } else { boolean didFail = false; ClipData userdata = returnIntent.getClipData(); From 19e0d4b138153a8f8f3e27c6ad895728cd4066be Mon Sep 17 00:00:00 2001 From: Darcy Wong Date: Wed, 28 Aug 2019 10:58:40 +0700 Subject: [PATCH 5/7] Default to displaying advanced settings in file browser --- .../com/tavultesoft/kmapro/KeymanSettingsFragment.java | 1 + .../main/java/com/tavultesoft/kmapro/MainActivity.java | 9 --------- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/KeymanSettingsFragment.java b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/KeymanSettingsFragment.java index 259733c323..a523e8a0c7 100644 --- a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/KeymanSettingsFragment.java +++ b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/KeymanSettingsFragment.java @@ -51,6 +51,7 @@ public class KeymanSettingsFragment extends PreferenceFragmentCompat { public boolean onPreferenceClick(Preference preference) { Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); intent.addCategory(Intent.CATEGORY_OPENABLE); + intent.putExtra("android.content.extra.SHOW_ADVANCED", true); // Unfortunately, we can't filter for a "kmp" mime type intent.setType("*/*"); startActivityForResult(intent, MainActivity.READ_REQUEST_CODE); diff --git a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java index f3c3c56a05..4e1f6bd466 100644 --- a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java +++ b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java @@ -733,15 +733,6 @@ public class MainActivity extends AppCompatActivity implements OnKeyboardEventLi startActivity(getStartedIntent); } - // Launch System file browser for user to navigate to local .kmp files - private void showFileBrowser() { - Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); - intent.addCategory(Intent.CATEGORY_OPENABLE); - // Unfortunately, we can't filter for a "kmp" mime type - intent.setType("*/*"); - startActivityForResult(intent, READ_REQUEST_CODE); - } - private void showSettings() { Intent settingsIntent = new Intent(this, KeymanSettingsActivity.class); startActivity(settingsIntent); From 3964ea1703002a99884afb80b8edd84114cbc446 Mon Sep 17 00:00:00 2001 From: Darcy Wong Date: Wed, 28 Aug 2019 13:38:23 +0700 Subject: [PATCH 6/7] Disable the advanced view --- .../java/com/tavultesoft/kmapro/KeymanSettingsFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/KeymanSettingsFragment.java b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/KeymanSettingsFragment.java index a523e8a0c7..676ab7bbd0 100644 --- a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/KeymanSettingsFragment.java +++ b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/KeymanSettingsFragment.java @@ -51,7 +51,7 @@ public class KeymanSettingsFragment extends PreferenceFragmentCompat { public boolean onPreferenceClick(Preference preference) { Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); intent.addCategory(Intent.CATEGORY_OPENABLE); - intent.putExtra("android.content.extra.SHOW_ADVANCED", true); + intent.putExtra("android.content.extra.SHOW_ADVANCED", false); // Unfortunately, we can't filter for a "kmp" mime type intent.setType("*/*"); startActivityForResult(intent, MainActivity.READ_REQUEST_CODE); From 275bb5f486d8b46892476b0db4d937b1ac418226 Mon Sep 17 00:00:00 2001 From: Darcy Wong Date: Fri, 30 Aug 2019 06:31:47 +0700 Subject: [PATCH 7/7] Update history.md --- android/history.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/android/history.md b/android/history.md index 44dd6ff0ac..3bfd484b14 100644 --- a/android/history.md +++ b/android/history.md @@ -3,6 +3,10 @@ ## 13.0 alpha * Start version 13.0 +## 2019-08-30 12.0.4081 beta +* New Feature: + * Allow user to "Add keyboard from local device" from Settings menu (#1992) + ## 2019-08-27 12.0.4080 beta * Fix menu icon and text alignment (#1999)