Android APN设置及获得手机号

目前供职于电信,只做电信的业务,故列表中只有电信的APN信息

Java代码 复制代码
  1. /**
  2. * 电信APN列表
  3. * @author wudongdong
  4. *
  5. */
  6. public class APNNET {
  7. public static String CTWAP="ctwap";
  8. public static String CTNET="ctnet";
  9. }

获得APN的类型

Java代码 复制代码
  1. /**
  2. * 获得APN类型
  3. * @author wudongdong
  4. *
  5. */
  6. public class ApnUtil {
  7. private static Uri PREFERRED_APN_URI = Uri
  8. .parse("content://telephony/carriers/preferapn");
  9. /**
  10. * get apntype
  11. * @param context
  12. * @return
  13. */
  14. public static String getApnType(Context context){
  15. String apntype="nomatch";
  16. Cursor c = context.getContentResolver().query(PREFERRED_APN_URI,
  17. null, null, null, null);
  18. c.moveToFirst();
  19. String user=c.getString(c.getColumnIndex("user"));
  20. if(user.startsWith(APNNET.CTNET)){
  21. apntype=APNNET.CTNET;
  22. }else if(user.startsWith(APNNET.CTWAP)){
  23. apntype=APNNET.CTWAP;
  24. }
  25. return apntype;
  26. }
  27. }


获得手机号码的话可以传IMSI码到指定接口,接口地址不方便说。

但可以透露一点,必须走CTWAP,这也是判断APN类型的原因

发现很多应用如果APN是走代理的话就不能联网,那么再介绍一下用APN设置网络的代理信息。

Java代码 复制代码
  1. Cursor c = context.getContentResolver().query(PREFERRED_APN_URI,
  2. null, null, null, null);
  3. c.moveToFirst();
  4. String proxy=c.getString(c.getColumnIndex("proxy"));
  5. if (!"".equals(proxy) && proxy!=null) {
  6. Properties prop = System.getProperties();
  7. System.getProperties().put("proxySet", "true");
  8. prop.setProperty("http.proxyHost", c.getString(c
  9. .getColumnIndex("proxy")));
  10. prop.setProperty("http.proxyPort", c.getString(c
  11. .getColumnIndex("port")));
  12. String authentication = c.getString(c.getColumnIndex("user"))
  13. + ":" + c.getString(c.getColumnIndex("password"));
  14. String encodedLogin = Base64.encode(authentication);
  15. uc.setRequestProperty("Proxy-Authorization", " Basic "
  16. + encodedLogin);
  17. }
  18. c.close();

你可能感兴趣的:(android)