Is it possible?
Strictly speaking, it is not possible for any common definition of the phrase "runs a.apk".
In particular, njzk2's comments do not "run" an APK.
There are techniques, such as the one that njzk2 linked to, for an Android app to execute Dalvik bytecode from another APK. However, this solution has many problems:
Unless that bytecode was specifically designed to be used that way, the code from the other APK has no access to its own resources.
The code from that other APK has no access to its own internal storage.
The code from that other APK cannot use anything from its own manifest, such as permissions.
Unless you take specific steps to attempt to validate the other APK, the other APK can have malicious code that you would wind up executing in your process, making you the potential means of delivering and deploying malware.
And those are just the problems from off the top of my head.
All of that can be overcome, by carefully crafting the code in the APK (and in your code that uses classes from that APK). So, for a plugin model, this approach is not out of the question, though it is complicated.
However, if you want to run some arbitrary APK, particularly one that you did not write yourself, the odds of it working successfully are very low.