[Android Apps and Games] RiverSource:
Better, but not perfect.

The process dies not at boot. But unfortunately it restores the mount points not at boot time, but after starting the app.

logcat on a i9000 running ICS (AOKP):

shell@android:/ $ logcat | grep -i Folders
I/ActivityManager( 186): Start proc com.ryosoftware.foldersplug for broadcast com.ryosoftware.foldersplug/.MainReceiver: pid=1003 uid=10118 gids={}
D/FoldersPlug( 1003): MainReceiver: Event 'android.intent.action.BOOT_COMPLETED' received
I/ActivityManager( 186): No longer want com.ryosoftware.foldersplug (pid 1003): hidden #16
I/ActivityManager( 186): Start proc com.ryosoftware.foldersplug for broadcast com.ryosoftware.foldersplug/.MainReceiver: pid=1287 uid=10118 gids={}
D/FoldersPlug( 1287): MainReceiver: Event 'android.intent.action.UMS_CONNECTED' received
I/ActivityManager( 186): No longer want com.ryosoftware.foldersplug (pid 1287): hidden #16
I/ActivityManager( 186): Start proc com.ryosoftware.foldersplug for broadcast com.ryosoftware.foldersplug/.MainReceiver: pid=1648 uid=10118 gids={}
D/FoldersPlug( 1648): MainReceiver: Event 'android.intent.action.UMS_DISCONNECTED' received
D/FoldersPlug( 1648): MainReceiver: Event 'android.intent.action.UMS_CONNECTED' received
D/FoldersPlug( 1648): MainReceiver: Event 'android.intent.action.UMS_CONNECTED' received
D/FoldersPlug( 1648): MainReceiver: Event 'android.intent.action.UMS_DISCONNECTED' received
I/ActivityManager( 186): START {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.ryosoftware.foldersplug/.MainActivity} from pid 430
D/FoldersPlug( 1648): MainActivity: Class created
D/FoldersPlug( 1648): DatabaseHelper: Class created
D/FoldersPlug( 1648): DatabaseContainer: Class created
D/FoldersPlug( 1648): DatabaseContainer: Opening database
D/FoldersPlug( 1648): DatabaseContainer: Database opened
D/su ( 1859): 10118 com.ryosoftware.foldersplug executing 0 sh using shell /system/bin/sh : sh
D/FoldersPlug( 1648): SuperuserManager: Root access granted
D/FoldersPlug( 1648): SuperuserCommandsExecutor: Class created
D/FoldersPlug( 1648): DatabaseContainer: Retrieving all rows data
D/FoldersPlug( 1648): DatabaseContainer: Returning a non empty result
D/FoldersPlug( 1648): MainService: Class created
D/FoldersPlug( 1648): MainService: On start command procedure executed
D/FoldersPlug( 1648): MainService: Handling event 'get mount states'
D/FoldersPlug( 1648): MountPoint: Data logging startes
D/FoldersPlug( 1648): MountPoint: Identifier: 1
D/FoldersPlug( 1648): MountPoint: Source: /mnt/emmc/NAVIGON
D/FoldersPlug( 1648): MountPoint: Target: /mnt/sdcard/Navigon
D/FoldersPlug( 1648): MountPoint: Enabled: true
D/FoldersPlug( 1648): MountPoint: Mounted: false
D/FoldersPlug( 1648): MountPoint: Auto unmounted: false
D/FoldersPlug( 1648): MountPoint: Data logging ended
D/FoldersPlug( 1648): MainService: 'Get mount states' event handled
I/ActivityManager( 186): Displayed com.ryosoftware.foldersplug/.MainActivity: +331ms
I/ActivityManager( 186): START {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.ryosoftware.foldersplug/.MainActivity} from pid 430
I/ActivityManager( 186): START {cmp=com.ryosoftware.foldersplug/.MountPointsEdition} from pid 1648
D/FoldersPlug( 1648): MountPointsEdition: Class created
D/FoldersPlug( 1648): MainService: Handling event 'get mount states'
D/FoldersPlug( 1648): MountPoint: Data logging startes
D/FoldersPlug( 1648): MountPoint: Identifier: 1
D/FoldersPlug( 1648): MountPoint: Source: /mnt/emmc/NAVIGON
D/FoldersPlug( 1648): MountPoint: Target: /mnt/sdcard/Navigon
D/FoldersPlug( 1648): MountPoint: Enabled: true
D/FoldersPlug( 1648): MountPoint: Mounted: false
D/FoldersPlug( 1648): MountPoint: Auto unmounted: false
D/FoldersPlug( 1648): MountPoint: Data logging ended
D/FoldersPlug( 1648): MainService: 'Get mount states' event handled
I/ActivityManager( 186): Displayed com.ryosoftware.foldersplug/.MountPointsEdition: +74ms
D/FoldersPlug( 1648): MainService: Handling event 'update mountpoint'
D/FoldersPlug( 1648): MainService: Trying to update mountpoint
D/FoldersPlug( 1648): DatabaseContainer: Trying to make update (source=/mnt/emmc/NAVIGON, destination=/mnt/sdcard/Navigon, enabled=disabled)
D/FoldersPlug( 1648): DatabaseContainer: Update result is: true
D/FoldersPlug( 1648): MainService: Update completed without errors
D/FoldersPlug( 1648): MainService: 'Update mountpoint' event handled
D/FoldersPlug( 1648): MainService: Handling event 'get mount states'
D/FoldersPlug( 1648): MountPoint: Data logging startes
D/FoldersPlug( 1648): MountPoint: Identifier: 1
D/FoldersPlug( 1648): MountPoint: Source: /mnt/emmc/NAVIGON
D/FoldersPlug( 1648): MountPoint: Target: /mnt/sdcard/Navigon
D/FoldersPlug( 1648): MountPoint: Enabled: false
D/FoldersPlug( 1648): MountPoint: Mounted: false
D/FoldersPlug( 1648): MountPoint: Auto unmounted: false
D/FoldersPlug( 1648): MountPoint: Data logging ended
D/FoldersPlug( 1648): MainService: 'Get mount states' event handled
D/FoldersPlug( 1648): MainService: Handling event 'update mountpoint'
D/FoldersPlug( 1648): MainService: Trying to update mountpoint
D/FoldersPlug( 1648): DatabaseContainer: Trying to make update (source=/mnt/emmc/NAVIGON, destination=/mnt/sdcard/Navigon, enabled=enabled)
D/FoldersPlug( 1648): DatabaseContainer: Update result is: true
D/FoldersPlug( 1648): MainService: Update completed without errors
D/FoldersPlug( 1648): MainService: 'Update mountpoint' event handled
D/FoldersPlug( 1648): MainService: Handling event 'get mount states'
D/FoldersPlug( 1648): MountPoint: Data logging startes
D/FoldersPlug( 1648): MountPoint: Identifier: 1
D/FoldersPlug( 1648): MountPoint: Source: /mnt/emmc/NAVIGON
D/FoldersPlug( 1648): MountPoint: Target: /mnt/sdcard/Navigon
D/FoldersPlug( 1648): MountPoint: Enabled: true
D/FoldersPlug( 1648): MountPoint: Mounted: false
D/FoldersPlug( 1648): MountPoint: Auto unmounted: false
D/FoldersPlug( 1648): MountPoint: Data logging ended
D/FoldersPlug( 1648): MainService: 'Get mount states' event handled
D/FoldersPlug( 1648): MountPointsEdition: Class destroyed
D/FoldersPlug( 1648): MainActivity: Class destroyed
I/ActivityManager( 186): START {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10304000 cmp=com.ryosoftware.foldersplug/.MainActivity} from pid 252
D/FoldersPlug( 1648): MainActivity: Class created
D/FoldersPlug( 1648): MainService: Handling event 'get mount states'
D/FoldersPlug( 1648): MountPoint: Data logging startes
D/FoldersPlug( 1648): MountPoint: Identifier: 1
D/FoldersPlug( 1648): MountPoint: Source: /mnt/emmc/NAVIGON
D/FoldersPlug( 1648): MountPoint: Target: /mnt/sdcard/Navigon
D/FoldersPlug( 1648): MountPoint: Enabled: true
D/FoldersPlug( 1648): MountPoint: Mounted: false
D/FoldersPlug( 1648): MountPoint: Auto unmounted: false
D/FoldersPlug( 1648): MountPoint: Data logging ended
D/FoldersPlug( 1648): MainService: 'Get mount states' event handled
D/FoldersPlug( 1648): MainService: Received device boot completed event
D/FoldersPlug( 1648): Constants: Getting preferences object
D/FoldersPlug( 1648): Constants: Initializating constants
D/FoldersPlug( 1648): MainService: Automounts when device boots is enabled
D/FoldersPlug( 1648): MainService: Trying to mount/umount mountpoint
D/FoldersPlug( 1648): SuperuserCommandsExecutor: Trying to mount '/mnt/emmc/NAVIGON' into folder '/mnt/sdcard/Navigon'
D/FoldersPlug( 1648): SuperuserCommandsExecutor: LS command modifiers: fields=6, prefixed=false, data=drwxr-xr-x root root 2012-02-29 10:40
D/FoldersPlug( 1648): SuperuserCommandsExecutor: Mount returns: true
D/FoldersPlug( 1648): MainService: Mountpoint mounted
D/FoldersPlug( 1648): MainService: Handling event 'get mount states'
D/FoldersPlug( 1648): MountPoint: Data logging startes
D/FoldersPlug( 1648): MountPoint: Identifier: 1
D/FoldersPlug( 1648): MountPoint: Source: /mnt/emmc/NAVIGON
D/FoldersPlug( 1648): MountPoint: Target: /mnt/sdcard/Navigon
D/FoldersPlug( 1648): MountPoint: Enabled: true
D/FoldersPlug( 1648): MountPoint: Mounted: true
D/FoldersPlug( 1648): MountPoint: Auto unmounted: false
D/FoldersPlug( 1648): MountPoint: Data logging ended
D/FoldersPlug( 1648): MainService: 'Get mount states' event handled
I/ActivityManager( 186): Displayed com.ryosoftware.foldersplug/.MainActivity: +198ms
D/FoldersPlug( 1648): MainReceiver: Event 'android.intent.action.UMS_CONNECTED' received
D/FoldersPlug( 1648): MainService: Received device ums connected event
D/FoldersPlug( 1648): MainService: Trying to mount/umount mountpoint
D/FoldersPlug( 1648): SuperuserCommandsExecutor: Trying to unmount '/mnt/sdcard/Navigon'
D/FoldersPlug( 1648): SuperuserCommandsExecutor: Unmount returns: true
D/FoldersPlug( 1648): MainService: Mountpoint umounted
D/FoldersPlug( 1648): MainService: Handling event 'get mount states'
D/FoldersPlug( 1648): MountPoint: Data logging startes
D/FoldersPlug( 1648): MountPoint: Identifier: 1
D/FoldersPlug( 1648): MountPoint: Source: /mnt/emmc/NAVIGON
D/FoldersPlug( 1648): MountPoint: Target: /mnt/sdcard/Navigon
D/FoldersPlug( 1648): MountPoint: Enabled: true
D/FoldersPlug( 1648): MountPoint: Mounted: false
D/FoldersPlug( 1648): MountPoint: Auto unmounted: true
D/FoldersPlug( 1648): MountPoint: Data logging ended
D/FoldersPlug( 1648): MainService: 'Get mount states' event handled
D/FoldersPlug( 1648): MainReceiver: Event 'android.intent.action.UMS_CONNECTED' received
D/FoldersPlug( 1648): MainService: Handling event 'get mount states'
D/FoldersPlug( 1648): MountPoint: Data logging startes
D/FoldersPlug( 1648): MountPoint: Identifier: 1
D/FoldersPlug( 1648): MountPoint: Source: /mnt/emmc/NAVIGON
D/FoldersPlug( 1648): MountPoint: Target: /mnt/sdcard/Navigon
D/FoldersPlug( 1648): MountPoint: Enabled: true
D/FoldersPlug( 1648): MountPoint: Mounted: false
D/FoldersPlug( 1648): MountPoint: Auto unmounted: true
D/FoldersPlug( 1648): MountPoint: Data logging ended
D/FoldersPlug( 1648): MainService: 'Get mount states' event handled
D/FoldersPlug( 1648): MainReceiver: Event 'android.intent.action.UMS_DISCONNECTED' received
D/FoldersPlug( 1648): MainService: Received device ums disconnected event
D/FoldersPlug( 1648): MainService: Trying to mount/umount mountpoint
D/FoldersPlug( 1648): SuperuserCommandsExecutor: Trying to mount '/mnt/emmc/NAVIGON' into folder '/mnt/sdcard/Navigon'
D/FoldersPlug( 1648): SuperuserCommandsExecutor: Mount returns: true
D/FoldersPlug( 1648): MainService: Mountpoint mounted
D/FoldersPlug( 1648): MainService: Handling event 'get mount states'
D/FoldersPlug( 1648): MountPoint: Data logging startes
D/FoldersPlug( 1648): MountPoint: Identifier: 1
D/FoldersPlug( 1648): MountPoint: Source: /mnt/emmc/NAVIGON
D/FoldersPlug( 1648): MountPoint: Target: /mnt/sdcard/Navigon
D/FoldersPlug( 1648): MountPoint: Enabled: true
D/FoldersPlug( 1648): MountPoint: Mounted: true
D/FoldersPlug( 1648): MountPoint: Auto unmounted: false
D/FoldersPlug( 1648): MountPoint: Data logging ended
D/FoldersPlug( 1648): MainService: 'Get mount states' event handled
D/FoldersPlug( 1648): MainReceiver: Event 'android.intent.action.UMS_CONNECTED' received
D/FoldersPlug( 1648): MainService: Received device ums connected event
D/FoldersPlug( 1648): MainService: Trying to mount/umount mountpoint
D/FoldersPlug( 1648): SuperuserCommandsExecutor: Trying to unmount '/mnt/sdcard/Navigon'
D/FoldersPlug( 1648): SuperuserCommandsExecutor: Unmount returns: true
D/FoldersPlug( 1648): MainService: Mountpoint umounted
D/FoldersPlug( 1648): MainService: Handling event 'get mount states'
D/FoldersPlug( 1648): MountPoint: Data logging startes
D/FoldersPlug( 1648): MountPoint: Identifier: 1
D/FoldersPlug( 1648): MountPoint: Source: /mnt/emmc/NAVIGON
D/FoldersPlug( 1648): MountPoint: Target: /mnt/sdcard/Navigon
D/FoldersPlug( 1648): MountPoint: Enabled: true
D/FoldersPlug( 1648): MountPoint: Mounted: false
D/FoldersPlug( 1648): MountPoint: Auto unmounted: true
D/FoldersPlug( 1648): MountPoint: Data logging ended
D/FoldersPlug( 1648): MainService: 'Get mount states' event handled
^C
130|shell@android:/ $