在源码上二次开发,想获得当前APN,方法如下:
public String getApn(){
        ConnectivityManager cm =(ConnectivityManager)this.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo ni = cm.getActiveNetworkInfo(); 
        String apn = ni.getExtraInfo();
        return apn;
测试结果在模拟器上可以得出Apn,而真机测试确实报空指针异常。
小弟愚钝,有高手能告知为什么吗?不胜感激!

解决方案 »

  1.   

    我刚好前段时间做了一个apn一键还原,代码给你参考下:
    Cursor cr = context1.getContentResolver().query(APN_TABLE_URI, null, "current=1", null, null);
    mStrings = new String[cr.getCount()];
    int i = 0;
    while (cr != null && cr.moveToNext()) {
    mStrings[i] = "ID:" + cr.getString(cr.getColumnIndex("_id")) + "\n" + "name:"
    + cr.getString(cr.getColumnIndex("name")) + "\n" + "numeric:"
    + cr.getString(cr.getColumnIndex("numeric")) + "\n" + "mcc:"
    + cr.getString(cr.getColumnIndex("mcc")) + "\n" + "mnc:"
    + cr.getString(cr.getColumnIndex("mnc")) + "\n" + "apn:"
    + cr.getString(cr.getColumnIndex("apn")) + "\n" + "user:"
    + cr.getString(cr.getColumnIndex("user")) + "\n" + "server:"
    + cr.getString(cr.getColumnIndex("server")) + "\n" + "password:"
    + cr.getString(cr.getColumnIndex("password")) + "\n" + "proxy:"
    + cr.getString(cr.getColumnIndex("proxy")) + "\n" + "port:"
    + cr.getString(cr.getColumnIndex("port")) + "\n" + "mmsproxy:"
    + cr.getString(cr.getColumnIndex("mmsproxy")) + "\n" + "mmsport:"
    + cr.getString(cr.getColumnIndex("mmsport")) + "\n" + "mmsc:"
    + cr.getString(cr.getColumnIndex("mmsc")) + "\n" + "authtype:"
    + cr.getString(cr.getColumnIndex("authtype")) + "\n" + "type:"
    + cr.getString(cr.getColumnIndex("type")) + "\n" + "current:"
    + cr.getString(cr.getColumnIndex("current")) + "\n"
    +"-------------------------"+ "\n";}