Yes, this can be done. Here's how:
First, you must get a list of all the installed applications. This can be done using the snippet from this SO question:
final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
final List pkgAppsList = getPackageManager().queryIntentActivities( mainIntent, 0);
for (Object object : pkgAppsList) {
ResolveInfo info = (ResolveInfo) object;
File file =new File( info.activityInfo.applicationInfo.publicSourceDir);
// copy the .apk file to wherever
}
This allows you to get a File reference for any APK installed on the device. Once you have a File, you can write it to external storage or upload it to a server.