With browsing the python s60 forum I was got the impression that
sys.modules['socket'] = __import__('btsocket')
would override the socket module with the btsocket, but it didn't. The 'usual'
apid = socket.select_access_point()
apo = socket.access_point(apid)
socket.set_default_access_point(apo)
did not show any effects when doing urllib.urlopen calls after that - the dialog opens every single time.
The solution seems to be using socket for ip connections, and btsocket for bluetooth stuff.
import socket
import appuifw
aps = [ap['name'] for ap in socket.access_points()]
aps.sort()
apid = appuifw.popup_menu(aps,u'select access point')
socket.set_default_access_point(aps[apid])
import urllib
print 'baach'
urllib.urlopen('http://baach.de/')
print 'google'
urllib.urlopen('http://google.de/')
print 'fini'
The trick is that socket.set_default_access_point takes unicode access point names, in contrast to the btsocket.set_default_access_point, which wants to have an access point object.