Android添加并设置APN

原文转载自:

https://blog.csdn.net/Anmmei/article/details/77461530 

==========照例先说废话,很久不写blog了,本人实际已一度退出码农生涯。转行通信去了。通信虽然没啥钱,但是做后台朝九晚五双休,半梦半醒干活,这才是生活啊。。。。感觉非常适合我这种大龄佛系青年。然而人算不如天算,一场疫情导致迟迟无法复工。人在杭州,房租贼贵,一天天的烧钱包,看着兜里不多的钱,其实有点坐不住,顶着疫情回家,然后年初正彷徨,打算省内继续干通信,未料前公司的合作公司的老板打电话让我去他厂里干活,横竖一时没通信的活可以干,所以继续入坑码农,以上。

最近有需求添加并设置APN。照例百度,找到一篇比较好的,就是上文地址。本人略微改进如下

package com.XXX你懂的;

import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.telephony.TelephonyManager;
import android.util.Log;

public class APNUtli {
    public static Uri APN_URI = Uri.parse("content://telephony/carriers");
    public static Uri CURRENT_APN_URI = Uri.parse("content://telephony/carriers/preferapn");

    public static int addAPN(Context context, String apn) {
        int id = -1;
        String NUMERIC = getSIMInfo(context);
        if (NUMERIC == null) {
            return -1;
        }

        ContentResolver resolver = context.getContentResolver();
        ContentValues values = new ContentValues();
        values.put("name", apn);                                  //apn中文描述
        values.put("apn", apn);                                     //apn名称
        values.put("type", "default");                            //apn类型
        values.put("numeric", NUMERIC);
        values.put("mcc", NUMERIC.substring(0, 3));
        values.put("mnc", NUMERIC.substring(3, NUMERIC.length()));
        values.put("proxy", "");                                        //代理
        values.put("port", "");                                         //端口
        values.put("mmsproxy", "");                                     //彩信代理
        values.put("mmsport", "");                                      //彩信端口
        values.put("user", "");                                         //用户名
        values.put("server", "");                                       //服务器
        values.put("password", "");                                     //密码
        values.put("mmsc", "");                                          //MMSC
        Cursor c = null;
        Uri newRow = resolver.insert(APN_URI, values);
        if (newRow != null) {
            c = resolver.query(newRow, null, null, null, null);
            int idIndex = c.getColumnIndex("_id");
            c.moveToFirst();
            id = c.getShort(idIndex);
        }
        if (c != null)
            c.close();
        return id;
    }

    public static String getSIMInfo(Context context) {
        TelephonyManager iPhoneManager = (TelephonyManager)context
                .getSystemService(Context.TELEPHONY_SERVICE);
                return iPhoneManager.getSimOperator();
    }

    // 设置接入点
    public static void setAPN(Context context, int id) {
        ContentResolver resolver = context.getContentResolver();
        ContentValues values = new ContentValues();
        values.put("apn_id", id);
        resolver.update(CURRENT_APN_URI, values, null, null);
    }

    public static int getAPN(Context context, String apn){
        ContentResolver resolver = context.getContentResolver();
        String apn_condition = String.format("apn like '%%%s%%'", apn);
        Cursor c = resolver.query(APN_URI, null, apn_condition, null, null);

        // 该项APN存在
        if (c != null && c.moveToNext()) {
            int id = c.getShort(c.getColumnIndex("_id"));
            String name1 = c.getString(c.getColumnIndex("name"));
            String apn1 = c.getString(c.getColumnIndex("apn"));

            Log.e("APN has exist", id + name1 + apn1);
            return id;
        }

        return -1;
    }
}

用法如下:

        String apn_name = "testapn567";
        int apn_id = APNUtli.getAPN( ZTLHelperService.this, apn_name);
        if(apn_id == -1){
            apn_id = APNUtli.addAPN( ZTLHelperService.this, apn_name );
            if( apn_id == -1){
                Log.e(TAG, "设置APN失败");
            }
        }

        if( apn_id != -1){
            APNUtli.setAPN(ZTLHelperService.this, apn_id);
        }

再次感谢文首楼主不吝分享。本人略作修改,方便有缘人。最近踩坑有点多,网上文章千篇一律。纯转载的事还是少做,起码得有点干货吧。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值