title: Control an application from another application
body: <p>I read <a href="https://stackoverflow.com/questions/3872063/android-launch-an-application-from-another-application">this question</a> and <a href="https://stackoverflow.com/questions/5281910/starting-one-android-app-from-another-app">another question</a> and I understand how to launch an application from another application (Let's call the other application <em>LauncherApplication</em>). However, my goal is not only to launch an application, but to use its functions, so I suppose the <em>LauncherApplication</em> should start an activity using an intent (explicit or implicit).</p>
  
  <p>I should know the data and the actions the installed applications react on and I should add these information to an intent instance before starting it. I wish <em>LauncherApplication</em> allows the user (not the developer) to configure this intent, but how do I know in advance the parameters to put in an intent for the installed applications?</p>
  
  <p>I should implement the "LauncherApplication* in order to allow the user to construct an intent via a graphical interface. Or I could make my application supports the addition of plugins: in this way, I could create a plugin for each installed application, where each plugin could be responsible to manage the configuration of the intent concerning the application associated with it.</p>
  
  <p><strong>UPDATE (added details).</strong> In particular, the <em>LauncherApplication</em> should be a service with a speech recognizer enabled, so the user may start an application uttering specific keywords: as well as launch an application, the user should be able to close it and use its functions.</p>
  
  <p>For example, I could have installed an application ((Let's call it <em>LibraryApp</em>) to search for available books in a library; this application could have the following functions:</p>
  
  <ol>
  <li>Search for a book (this function may return if the book is available, it has already been loaned or if it was booked by someone else).</li>
  <li>Reserving a book (this function should return the completion of the reservation).</li>
  </ol>
  
  <p>In this way, when I pronounce, for example, the words "start LibraryApp", then the <em>LauncherApplication</em> service should launch the <em>LibraryApp</em> application. Once the application is launched, the service should be able to send commands to it to use one of the available functions (search for a book, reserving a book).</p>
  
  <p>How can I send commands to application that is already active, in order to control it?</p>