Does anyone know of a good Java Microsoft Office API capable or running on an Android? I know there is an OpenOffice Java API, but I haven't heard of anyone using it on Android.
I know that using intents is another option, but how common are pre-installed office viewers on the varying Android distributions? Would it be reasonable for a developer to expect the user to have one of these viewers installed? Is it reasonable to request that they install one of these applications if they don't already have one?
Unfortunately there's no built in Android control to edit MS Office files, or even to display them! It's a pretty big omission given iOS has built in support for displaying Office files. There don't seem to be viewer app consistently enough available to rely on (and they may not provide the kind of user experience you're hoping for either).
If you want to display or edit docx etc within your android application, you have to embed some third party code that adds this functionality. I'm not aware of any pre-packaged open source code that can do this, so unless you want to build/port a solution yourself you will need to commercially license something.
As others have noted, there are some open source projects in this area, but they're not packaged/ported to Android. If you did manage to get them ported and integrated, they'd add a huge overhead to your Android app download (eg. 80+ megabytes) and you'd need to then add a mobile suitable UI for them (see https://play.google.com/store/apps/details?id=com.andropenoffice&hl=en_GB for an example of a port with ui that I personally think is not suitable/user friendly for an Android application.)
One such SDK that I'm familiar with which solves this problem is based on the SmartOffice application:
http://smartoffice.artifex.com
It's available as an secure embeddable library that supports both display and (optionally) editing of Office documents. You can contact sosales@artifex.com for licensing information.
Disclosure: One of my jobs involves working on the SmartOffice code.
Since most of the documents we need to display are already hosted on the web, we opted to use an embedded web view that opens the document using google docs viewer.
We still have a few locally stored documents though that this approach doesn't work with. For these, our solution was to rely on the support of existing apps. After spending some more time with Android, It seems that most devices come equipped with some sort of document/pdf reading capability installed fresh out of the box. In the event that they don't have a capable app, we direct them to a market search for a free reader.
A suitable solution might be using Jword in the link below. It's not free but easy to use. http://www.independentsoft.de/jword/index.html
Using the library is as simple as this sample code
Most of the Microsoft Document viewers are heavy and expensive.
If you want to create a viewer yourself, you should take a look at Apache POI.