Introduce a custom intent action to close software keyboard

This CL introduces a custom intent action for apps to ask AOSP Keyboard to
close its software keyboard with guarding it with a signature-protected
permission.

Any app that is signed with the same signature as AOSP Keyboard can have
the following line in AndroidManifest.xml

  <uses-permission
          android:name="com.android.inputmethod.latin.HIDE_SOFT_INPUT"/>

to request AOSP Keyboard to close its software keyboard as follows.

  sendBroadcast(new Intent("com.android.inputmethod.latin.HIDE_SOFT_INPUT")
          .setPackage("com.android.inputmethod.latin"));

Test: Manually verified with a test app.
Fixes: 65270710
Change-Id: I4fd2e3a7336ec66c70582a2f274a200cbf035a7f
diff --git a/java/AndroidManifest.xml b/java/AndroidManifest.xml
index 9bb16c7..dedece5 100644
--- a/java/AndroidManifest.xml
+++ b/java/AndroidManifest.xml
@@ -35,6 +35,23 @@
     <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
     <uses-permission android:name="android.permission.WRITE_USER_DICTIONARY" />
 
+    <!-- A signature-protected permission to ask AOSP Keyboard to close the software keyboard.
+         To use this, add the following line into calling application's AndroidManifest.xml
+         <pre>
+         {@code
+         <uses-permission android:name="com.android.inputmethod.latin.HIDE_SOFT_INPUT"/>
+         }
+         </pre>
+         then call {@link android.content.Context#sendBroadcast(Intent)} as follows:
+         <pre>
+         {@code
+         sendBroadcast(new Intent("com.android.inputmethod.latin.HIDE_SOFT_INPUT")
+                 .setPackage("com.android.inputmethod.latin"));
+         }
+         </pre> -->
+    <permission android:name="com.android.inputmethod.latin.HIDE_SOFT_INPUT"
+                android:protectionLevel="signature" />
+
     <application android:label="@string/english_ime_name"
             android:icon="@drawable/ic_launcher_keyboard"
             android:supportsRtl="true"