Skip to main content
Tag

Android

Detect non system input method

By Blog

On Android developers cannot define whether the input field supports non standards/custom keyboards. This might be an issue for secured applications, like mobile banking, or any line of business apps. What can be done then is to at least notify the user that this is the case and he should be careful not to use such input methods when logging in and use only the system default ones.

The code to check that is:

InputMethodManager methodManager = (InputMethodManager)this.GetSystemService (Context.InputMethodService);

foreach (var inputMethodInfo in methodManager.EnabledInputMethodList)
{
    if (inputMethodInfo.Id.Equals (Settings.Secure.GetString (ContentResolver, Settings.Secure.DefaultInputMethod)) == false)
    {
        if ((inputMethodInfo.ServiceInfo.ApplicationInfo.Flags & ApplicationInfoFlags.System) == 0)
        {
            // we found non default input method, so show the error toast and return;
        }
    }
}

Happy coding.

Cannot run Android SDK Manager

By Blog

After the Android SDK or Xamarin updates, should you ever have trouble to run Android SDK Manager and see the exception:

java.lang.NullPointerException
at java.io.File.(File.java:277)
at com.android.sdklib.internal.avd.AvdManager.parseAvdInfo(AvdManager.java:1623)
at com.android.sdklib.internal.avd.AvdManager.buildAvdList(AvdManager.java:1584)
at com.android.sdklib.internal.avd.AvdManager.(AvdManager.java:357)
at com.android.sdklib.internal.avd.AvdManager.getInstance(AvdManager.java:380)
at com.android.sdklib.internal.repository.updater.UpdaterData.initSdk(UpdaterData.java:259)
at com.android.sdklib.internal.repository.updater.UpdaterData.(UpdaterData.java:127)
at com.android.sdkuilib.internal.repository.SwtUpdaterData.(SwtUpdaterData.java:61)
at com.android.sdkuilib.internal.repository.ui.AvdManagerWindowImpl1.(AvdManagerWindowImpl1.java:97)
at com.android.sdkuilib.repository.AvdManagerWindow.(AvdManagerWindow.java:83)
at com.android.sdkmanager.Main.showAvdManagerWindow(Main.java:432)
at com.android.sdkmanager.Main.doAction(Main.java:380)
at com.android.sdkmanager.Main.run(Main.java:151)
at com.android.sdkmanager.Main.main(Main.java:117)

then just delete directory “users//.android/avd”.

Happy coding!