[Nexus 7 Themes and Apps] Synman:
So about a year ago I wrote a little MMS sender library due to Google's inability to expose any kind of public MMS api. Basically I consumed a number of protected AOSP mms related classes and a handful of subtle tweaks to get things working. And on Honeycomb and below it worked like a dream.

The app requires access to the APN list (under the covers all MMS does is an HTTP post to the mmsc specified in your APN -- assuming it can find one from reading the list).

In ICS Google restricted access to the APN list but there's a simple work-around ... Run as root. Having adapted my little tester app, I have it running on my N73G however, it appears the tranditional cingular mmsc host is resetting my connection.

12-01 12:48:24.936: D/SimpleMms(2817): button pressed
12-01 12:48:24.946: D/SimpleMms(2817): wifi disabled - was enabled=false
12-01 12:48:24.946: D/SimpleMms(2817): registering connectivity intent
12-01 12:48:24.956: D/SimpleMms(2817): connectivity intent received - android.net.conn.CONNECTIVITY_CHANGE
12-01 12:48:24.956: D/SimpleMms(2817): intent reports MMS ready
12-01 12:48:24.956: D/SimpleMms(2817): sending mms message
12-01 12:48:24.976: D/APNHelper(2817): found apn http://mmsc.cingular.com wireless.cingular.com 80
12-01 12:48:24.986: V/Mms:transaction(2817): httpConnection: params list
12-01 12:48:24.986: V/Mms:transaction(2817):	token	= 4444
12-01 12:48:24.986: V/Mms:transaction(2817):	url	= http://mmsc.cingular.com
12-01 12:48:24.986: V/Mms:transaction(2817):	method	= POST
12-01 12:48:24.986: V/Mms:transaction(2817):	isProxySet	= true
12-01 12:48:24.986: V/Mms:transaction(2817):	proxyHost	= wireless.cingular.com
12-01 12:48:24.986: V/Mms:transaction(2817):	proxyPort	= 80
12-01 12:48:25.026: D/dalvikvm(2817): GC_CONCURRENT freed 178K, 5% free 7589K/7924K, paused 3ms+2ms, total 28ms
12-01 12:48:47.266: E/Mms:transaction(2817): Url: http://mmsc.cingular.com
12-01 12:48:47.266: E/Mms:transaction(2817): recvfrom failed: ECONNRESET (Connection reset by peer)
12-01 12:48:47.276: W/System.err(2817): java.io.IOException: recvfrom failed: ECONNRESET (Connection reset by peer)
12-01 12:48:47.276: W/System.err(2817):	at com.google.android.mms.transaction.HttpUtils.handleHttpConnectionException(HttpUtils.java:254)
12-01 12:48:47.276: W/System.err(2817):	at com.google.android.mms.transaction.HttpUtils.httpConnection(HttpUtils.java:238)
12-01 12:48:47.276: W/System.err(2817):	at com.shellware.simplemms.MainActivity$SendMmsPicture.run(MainActivity.java:192)
12-01 12:48:47.276: W/System.err(2817): Caused by: java.net.SocketException: recvfrom failed: ECONNRESET (Connection reset by peer)
12-01 12:48:47.276: W/System.err(2817):	at libcore.io.IoBridge.maybeThrowAfterRecvfrom(IoBridge.java:552)
12-01 12:48:47.276: W/System.err(2817):	at libcore.io.IoBridge.recvfrom(IoBridge.java:516)
12-01 12:48:47.276: W/System.err(2817):	at java.net.PlainSocketImpl.read(PlainSocketImpl.java:488)
12-01 12:48:47.276: W/System.err(2817):	at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46)
12-01 12:48:47.276: W/System.err(2817):	at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:240)
12-01 12:48:47.276: W/System.err(2817):	at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:103)
12-01 12:48:47.276: W/System.err(2817):	at org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:191)
12-01 12:48:47.286: W/System.err(2817):	at org.apache.http.impl.conn.DefaultResponseParser.parseHead(DefaultResponseParser.java:82)
12-01 12:48:47.286: W/System.err(2817):	at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:174)
12-01 12:48:47.286: W/System.err(2817):	at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:180)
12-01 12:48:47.286: W/System.err(2817):	at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:235)
12-01 12:48:47.286: W/System.err(2817):	at org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:259)
12-01 12:48:47.286: W/System.err(2817):	at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:279)
12-01 12:48:47.286: W/System.err(2817):	at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:121)
12-01 12:48:47.286: W/System.err(2817):	at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:428)
12-01 12:48:47.296: W/System.err(2817):	at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
12-01 12:48:47.296: W/System.err(2817):	at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:509)
12-01 12:48:47.296: W/System.err(2817):	at android.net.http.AndroidHttpClient.execute(AndroidHttpClient.java:262)
12-01 12:48:47.296: W/System.err(2817):	at com.google.android.mms.transaction.HttpUtils.httpConnection(HttpUtils.java:201)
12-01 12:48:47.296: W/System.err(2817):	... 1 more
12-01 12:48:47.296: W/System.err(2817): Caused by: libcore.io.ErrnoException: recvfrom failed: ECONNRESET (Connection reset by peer)
12-01 12:48:47.296: W/System.err(2817):	at libcore.io.Posix.recvfromBytes(Native Method)
12-01 12:48:47.296: W/System.err(2817):	at libcore.io.Posix.recvfrom(Posix.java:136)
12-01 12:48:47.296: W/System.err(2817):	at libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:164)
12-01 12:48:47.296: W/System.err(2817):	at libcore.io.IoBridge.recvfrom(IoBridge.java:513)
12-01 12:48:47.306: W/System.err(2817):	... 18 more
12-01 12:48:47.306: D/SimpleMms(2817): unregistered connectivity intent
12-01 12:48:47.306: D/SimpleMms(2817): wifi enabled=false