欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

操作APN的工具类,操作APN工具类,工具类 package

来源: javaer 分享于  点击 21945 次 点评:37

操作APN的工具类,操作APN工具类,工具类 package


工具类

package com.example.apnutil;import android.content.ContentResolver;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.SQLException;import android.net.Uri;import android.telephony.TelephonyManager;import android.util.Log;public class ApnUtil {    private Context context;    private int apnd_id = 0;    int m_oldApnId = -1;    int m_oldNetWorkType = -1;    private TelephonyManager tm;    private ContentResolver resolver;    private static final Uri APN_TABLE_URI = Uri            .parse("content://telephony/carriers");    private static final Uri PREFERRED_APN_URI = Uri            .parse("content://telephony/carriers/preferapn");    public ApnUtil(Context context) {        super();        this.context = context;        resolver = context.getContentResolver();        tm = (TelephonyManager) context                .getSystemService(Context.TELEPHONY_SERVICE);    }    /**     * 判断一个apn是否存在 存在返回id     *      * @param apnNode     * @return     */    public int isApnExisted(ApnEntity apnNode) {        int apnId = -1;        Cursor mCursor = resolver.query(APN_TABLE_URI, null, null, null, null);        while (mCursor != null && mCursor.moveToNext()) {            apnId = mCursor.getShort(mCursor.getColumnIndex("_id"));            String name = mCursor.getString(mCursor.getColumnIndex("name"));            String apn = mCursor.getString(mCursor.getColumnIndex("apn"));            String type = mCursor.getString(mCursor.getColumnIndex("type"));            String proxy = mCursor.getString(mCursor.getColumnIndex("proxy"));            String port = mCursor.getString(mCursor.getColumnIndex("port"));            String current = mCursor.getString(mCursor                    .getColumnIndex("current"));            String mcc = mCursor.getString(mCursor.getColumnIndex("mcc"));            String mnc = mCursor.getString(mCursor.getColumnIndex("mnc"));            String numeric = mCursor.getString(mCursor                    .getColumnIndex("numeric"));            Log.e("isApnExisted", "info:" + apnId + "_" + name + "_" + apn                    + "_" + type + "_" + current + "_" + proxy);// 遍历了所有的apn            if (/* apnNode.getName().equals(name) */(apnNode.getApn().equals(                    apn)                    && apnNode.getMcc().equals(mcc)                    && apnNode.getMnc().equals(mnc) && apnNode.getNumeric()                    .equals(numeric))                    && (type == null || "default".equals(type) || ""                            .equals(type)))// || (apnNode.getApn().equals(apn)                                            // && "".equals(proxy) &&                                            // "".equals(port))            {                return apnId;            } else {                apnId = -1;            }        }        return apnId;    }    /**     * 获取默认的apn     */    public ApnEntity getDefaultAPN() {        String id = "";        String apn = "";        String proxy = "";        String name = "";        String port = "";        String type = "";        String mcc = "";        String mnc = "";        String numeric = "";        ApnEntity apnNode = new ApnEntity();        Cursor mCursor = resolver.query(PREFERRED_APN_URI, null, null, null,                null);        if (mCursor == null) {            // throw new Exception("Non prefer apn exist");            return null;        }        while (mCursor != null && mCursor.moveToNext()) {            id = mCursor.getString(mCursor.getColumnIndex("_id"));            name = mCursor.getString(mCursor.getColumnIndex("name"));            apn = mCursor.getString(mCursor.getColumnIndex("apn"))                    .toLowerCase();            proxy = mCursor.getString(mCursor.getColumnIndex("proxy"));            port = mCursor.getString(mCursor.getColumnIndex("port"));            mcc = mCursor.getString(mCursor.getColumnIndex("mcc"));            mnc = mCursor.getString(mCursor.getColumnIndex("mnc"));            numeric = mCursor.getString(mCursor.getColumnIndex("numeric"));            Log.d("getDefaultAPN", "default Apn info:" + id + "_" + name + "_"                    + apn + "_" + proxy + "_" + proxy);        }        apnNode.setName(name);        apnNode.setApn(apn);        apnNode.setProxy(proxy);        apnNode.setPort(port);        apnNode.setMcc(mcc);        apnNode.setMnc(mnc);        apnNode.setNumeric(numeric);        return apnNode;    }    /**     * 设置默认的apn     *      * @param apnId     * @return     */    public boolean setDefaultApn(int apnId) {        boolean res = false;        ContentValues values = new ContentValues();        values.put("apn_id", apnId);        try {            resolver.update(PREFERRED_APN_URI, values, null, null);            Cursor c = resolver.query(PREFERRED_APN_URI, new String[] { "name",                    "apn" }, "_id=" + apnId, null, null);            if (c != null) {                res = true;                c.close();            }        } catch (SQLException e) {        }        return res;    }    /**     * 删除所有apn     */    public void deleteApn() {        resolver.delete(APN_TABLE_URI, null, null);    }    /**     * 增加新的apn     *      * @param apnNode     * @return     */    public int addNewApn(ApnEntity apnNode) {        int apnId = -1;        ContentValues values = new ContentValues();        values.put("name", apnNode.getName());        values.put("apn", apnNode.getApn());        values.put("proxy", apnNode.getProxy());        values.put("port", apnNode.getPort());        values.put("user", apnNode.getUser());        values.put("password", apnNode.getPassword());        values.put("mcc", apnNode.getMcc());        values.put("mnc", apnNode.getMnc());        values.put("numeric", apnNode.getNumeric());        // Note: this values need to be update, and for now, it only for XT800.        Cursor c = null;        try {            Uri newRow = resolver.insert(APN_TABLE_URI, values);            if (newRow != null) {                c = resolver.query(newRow, null, null, null, null);                int idindex = c.getColumnIndex("_id");                c.moveToFirst();                apnId = c.getShort(idindex);                Log.d("Robert", "New ID: " + apnId                        + ": Inserting new APN succeeded!");            }        } catch (SQLException e) {        }        if (c != null)            c.close();        return apnId;    }    public String getMCC() {        String numeric = tm.getSimOperator();        String mcc = numeric.substring(0, 3);        Log.i("MCC  is", mcc);        return mcc;    }    public String getMNC() {        String numeric = tm.getSimOperator();        String mnc = numeric.substring(3, numeric.length());        Log.i("MNC  is", mnc);        return mnc;    }    public String getSimOperator() {        String SimOperator = tm.getSimOperator();        return SimOperator;    }}

实体```javapackage com.example.apnutil;

/* * apn实体 /public class ApnEntity {

private String name;private String apn;private String proxy;private String port;private String user;private String server;private String password;private String mmsc;private String mmsproxy;private String mmsport;private String mcc;private String mnc;private String numeric;private String type;/** * @return the name */public String getName() {    return name;}/** * @param name *            the name to set */public void setName(String name) {    this.name = name;}/** * @return the apn */public String getApn() {    return apn;}/** * @param apn *            the apn to set */public void setApn(String apn) {    this.apn = apn;}/** * @return the proxy */public String getProxy() {    return proxy;}/** * @param proxy *            the proxy to set */public void setProxy(String proxy) {    this.proxy = proxy;}/** * @return the port */public String getPort() {    return port;}/** * @param port *            the port to set */public void setPort(String port) {    this.port = port;}/** * @return the user */public String getUser() {    return user;}/** * @param user *            the user to set */public void setUser(String user) {    this.user = user;}/** * @return the server */public String getServer() {    return server;}/** * @param server *            the server to set */public void setServer(String server) {    this.server = server;}/** * @return the password */public String getPassword() {    return password;}/** * @param password *            the password to set */public void setPassword(String password) {    this.password = password;}/** * @return the mmsc */public String getMmsc() {    return mmsc;}/** * @param mmsc *            the mmsc to set */public void setMmsc(String mmsc) {    this.mmsc = mmsc;}/** * @return the mmsproxy */public String getMmsproxy() {    return mmsproxy;}/** * @param mmsproxy *            the mmsproxy to set */public void setMmsproxy(String mmsproxy) {    this.mmsproxy = mmsproxy;}/** * @return the mmsport */public String getMmsport() {    return mmsport;}/** * @param mmsport *            the mmsport to set */public void setMmsport(String mmsport) {    this.mmsport = mmsport;}/** * @return the mcc */public String getMcc() {    return mcc;}/** * @param mcc *            the mcc to set */public void setMcc(String mcc) {    this.mcc = mcc;}/** * @return the mnc */public String getMnc() {    return mnc;}/** * @param mnc *            the mnc to set */public void setMnc(String mnc) {    this.mnc = mnc;}/** * @return the numeric */public String getNumeric() {    return numeric;}/** * @param numeric *            the numeric to set */public void setNumeric(String numeric) {    this.numeric = numeric;}/** * @return the type */public String getType() {    return type;}/** * @param type *            the type to set */public void setType(String type) {    this.type = type;}

}

测试activity```javapackage com.example.apnutil;import android.os.Bundle;import android.app.Activity;import android.util.Log;import android.view.Menu;public class MainActivity extends Activity {    private ApnUtil apnUtil;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        apnUtil = new ApnUtil(this);        //initApn();        restoreApn();    }    /**     * 恢復爲移動的apn     */    private void restoreApn() {            ApnEntity checkApn = new ApnEntity();            checkApn.setName("中国移动");            checkApn.setApn("cmnet");            checkApn.setUser("");            checkApn.setPassword("");            checkApn.setMcc(apnUtil.getMCC());            checkApn.setMnc(apnUtil.getMNC());            checkApn.setNumeric(apnUtil.getSimOperator());            int apnId = apnUtil.isApnExisted(checkApn);            if (apnId==-1) {                Log.e("apn", "不存在apn创建一个"+apnId);                apnId = apnUtil.addNewApn(checkApn);            }            apnUtil.setDefaultApn(apnId);    }    /**     * 初始化一個apn 并设置为默认     */    private void initApn() {        ApnEntity checkApn = new ApnEntity();        checkApn.setName("三方平台接口");        checkApn.setApn("lsrs.qd.sd");        checkApn.setUser("");        checkApn.setPassword("");        checkApn.setMcc(apnUtil.getMCC());        checkApn.setMnc(apnUtil.getMNC());        checkApn.setNumeric(apnUtil.getSimOperator());        int apnId = apnUtil.isApnExisted(checkApn);        if (apnId==-1) {            Log.e("apn", "不存在apn创建一个"+apnId);            apnId = apnUtil.addNewApn(checkApn);        }        apnUtil.setDefaultApn(apnId);    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.activity_main, menu);        return true;    }}
相关栏目:

用户点评