Thanks for this implementation. I will test it.

BTW, would you mind to tell me what's the incorrect with my original version??

I had found the following different things between yours and mime:

1. Can user change APN name?? In your version, the apn name looks like not changeable.
2. The way to determine two apn need to be merged. From the view of Ken, he told me two APN with the same name should be merged. In your version, it seems there is no way to merge.
3. Can we have two apn setting with the same apn name?? Ken told me that we can't.