OSDN Git Service

Fix IMM#showInputMethodAndSubtypeEnabler().
authorYohei Yukawa <yukawa@google.com>
Mon, 14 Dec 2015 23:41:52 +0000 (15:41 -0800)
committerYohei Yukawa <yukawa@google.com>
Tue, 15 Dec 2015 04:12:30 +0000 (20:12 -0800)
commit41f3427381d77fa9fcd12ed820716ebff7011c16
treec7cc898f7cc409d81fdb8c43f5cf396064a2c0ef
parentedd137b9b98d6ed8fd3337ce91f529efe9d0aef5
Fix IMM#showInputMethodAndSubtypeEnabler().

At least on AOSP InputMethodManager#showInputMethodAndSubtypeEnabler()
has been broken since its beginning.  As of Android M, there are three
separate issues:

  1. Type mismatch in message dispatching layer.
  2. It does not correctly reject API calls from clients that do not
     have IME focus.
  3. Context#startActivityAsUser(intent, null, UserHandle.CURRENT) ends
     up with java.lang.SecurityException:
       Permission Denial: startActivity asks to run as user -2 but is
       calling from user 0; this requires
       android.permission.INTERACT_ACROSS_USERS_FULL.

Given that we have a good alternative to achieve the same result, it
would make sense to deprecate that method and encourage developers to
use Intent-based solution instead.

Before doing that, this CL fixes the issues just for the record.

Bug: 26189558
Change-Id: Ic7a0df3203fee19542a3143abba9bc31baf9698a
services/core/java/com/android/server/InputMethodManagerService.java