Android基于APN获取手机号的方法

本文实例讲述了Android基于APN获取手机号的方法。分享给大家供大家参考。具体如下:

之前很多人说无法完全获取手机号,是因为现在有的卡不能获取,有的卡能获取,现在我们可以换一种思路来考虑问题,就是用APN的方式。请看代码:

APNNET.java如下:

/**
* 电信APN列表
* @author wudongdong
*
*/
public class APNNET {
public static String CTWAP="ctwap";
public static String CTNET="ctnet";
}
/**
* 电信APN列表
* @author wudongdong
*
*/
public class APNNET {
public static String CTWAP="ctwap";
public static String CTNET="ctnet";
}
//获得APN的类型
/**
* 获得APN类型
* @author wudongdong
*
*/
public class ApnUtil {
private static Uri PREFERRED_APN_URI = Uri
.parse("content://telephony/carriers/preferapn");
/**
* get apntype
* @param context
* @return
*/
public static String getApnType(Context context){
String apntype="nomatch";
Cursor c = context.getContentResolver().query(PREFERRED_APN_URI,null, null, null, null);
c.moveToFirst();
String user=c.getString(c.getColumnIndex("user"));
if(user.startsWith(APNNET.CTNET)){
apntype=APNNET.CTNET;
}else if(user.startsWith(APNNET.CTWAP)){
apntype=APNNET.CTWAP;
}
return apntype;
}
}
/**
* 获得APN类型
* @author wudongdong
*
*/
public class ApnUtil {
private static Uri PREFERRED_APN_URI = Uri
.parse("content://telephony/carriers/preferapn");
/**
* get apntype
* @param context
* @return
*/
public static String getApnType(Context context){
String apntype="nomatch";
Cursor c = context.getContentResolver().query(PREFERRED_APN_URI,null, null, null, null);
c.moveToFirst();
String user=c.getString(c.getColumnIndex("user"));
if(user.startsWith(APNNET.CTNET)){
apntype=APNNET.CTNET;
}else if(user.startsWith(APNNET.CTWAP)){
apntype=APNNET.CTWAP;
}
return apntype;
}
}

Java代码如下:

/**
 获得手机号码的话可以传IMSI码到指定接口,接口地址不方便说。但可以透露一点,必须走CTWAP,这也是判断APN类型的原因,发现很多应用如果APN是走代理的话就不能联网,那么再介绍一下用APN设置网络的代理信息。
 */
  Cursor c = context.getContentResolver().query(PREFERRED_APN_URI,null, null, null, null);
  c.moveToFirst();
  String proxy=c.getString(c.getColumnIndex("proxy"));
  if (!"".equals(proxy) && proxy!=null) {
  Properties prop = System.getProperties();
  System.getProperties().put("proxySet", "true");
  prop.setProperty("http.proxyHost", c.getString(c.getColumnIndex("proxy")));
  prop.setProperty("http.proxyPort", c.getString(c.getColumnIndex("port")));
  String authentication = c.getString(c.getColumnIndex("user"))
  + ":" + c.getString(c.getColumnIndex("password"));
  String encodedLogin = Base64.encode(authentication);
  uc.setRequestProperty("Proxy-Authorization", " BASIC "
  + encodedLogin);
  }
  c.close();

希望本文所述对大家的Android程序设计有所帮助。

(0)

相关推荐

  • Android 手机获取手机号实现方法

    最近做到一个项目,需要获取手机号.项目中使用的手机卡为电信卡,那么就以此为例吧. 网上不符合需求的方法 Google了一下,网上的做法如下: //获取手机号码 TelephonyManager tm = (TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE); String deviceid = tm.getDeviceId();//获取智能设备唯一编号 String te1 = tm.getLine1Number()

  • Android获取手机号码和运营商信息的方法

    本文实例讲述了Android获取手机号码和运营商信息的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: package com.pei.activity;    import android.app.Activity;  import android.os.Bundle;  import android.view.View;  import android.view.View.OnClickListener;  import android.widget.Button;  i

  • Android实现通讯录效果——获取手机号码和姓名

    首先给大家展示下运行效果图: 由于通讯录在手机里是以数据库贮存的 所以我们可以通过一个方法 context.getContentResolver().query(Phone.CONTENT_URI, null, null, null, null); 来获得通讯录 ,这个方法返回一个游标的数据类型,通过moveToNext()方法来获取所有的手机号码信息 当然读取手机通讯录需要权限 在adnroidManifest文件中声明即可 由于我也实现了打电话的功能 所以也要声明权限 <uses-permi

  • Android中获取设备的各种信息总结

    一.屏幕分辨率 Display display = getWindowManager().getDefaultDisplay(); Point size = new Point(); display.getSize(size); int width = size.x; int height = size.y; 或者: DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getM

  • Android NDK开发详细介绍

    Android之NDK开发 一.NDK产生的背景 Android平台从诞生起,就已经支持C.C++开发.众所周知,Android的SDK基于Java实现,这意味着基于Android SDK进行开发的第三方应用都必须使用Java语言.但这并不等同于"第三方应用只能使用Java".在Android SDK首次发布时,Google就宣称其虚拟机Dalvik支持JNI编程方式,也就是第三方应用完全可以通过JNI调用自己的C动态库,即在Android平台上,"Java+C"的

  • android 获取本机的IP地址和mac物理地址的实现方法

    获取本机IP地址 public String getLocalIpAddress() { WifiManager wifiManager = (WifiManager) getSystemService(android.content.Context.WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); int ipAddress = wifiInfo.getIpAddress(); try { return In

  • Android onCreate( )方法详细介绍

    onCreate( )方法是android应用程序中最常见的方法之一,那么,我们在使用onCreate()方法的时候应该注意哪些问题呢? 先看看Google Android Developers官网上的解释: onCreate(Bundle) is where you initialize your activity. Most importantly, here you will usually call setContentView(int) with a layout resource d

  • Android基于APN获取手机号的方法

    本文实例讲述了Android基于APN获取手机号的方法.分享给大家供大家参考.具体如下: 之前很多人说无法完全获取手机号,是因为现在有的卡不能获取,有的卡能获取,现在我们可以换一种思路来考虑问题,就是用APN的方式.请看代码: APNNET.java如下: /** * 电信APN列表 * @author wudongdong * */ public class APNNET { public static String CTWAP="ctwap"; public static Stri

  • Android基于SoftReference缓存图片的方法

    本文实例讲述了Android基于SoftReference缓存图片的方法.分享给大家供大家参考,具体如下: Java中的SoftReference即对象的软引用.如果一个对象具有软引用,内存空间足够,垃圾回收器就不会回收它:如果内存空间不足了,就会回收这些对象的内存.只要垃圾回收器没有回收它,该对象就可以被程序使用.软引用可用来实现内存敏感的高速缓存.使用软引用能防止内存泄露,增强程序的健壮性. SoftReference的特点是它的一个实例保存对一个Java对象的软引用,该软引用的存在不妨碍垃

  • Android使用线程获取网络图片的方法

    本文为大家分享了Android使用线程获取网络图片的具体代码,供大家参考,具体内容如下 AndroidManifest.xml    <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.zdcrobot.handlermessage

  • Android使用网络获取定位的方法

    本文实例为大家分享了Android使用网络获取定位的具体代码,供大家参考,具体内容如下 目标效果: 程序运行弹出权限选择,选择运行网络定位后会查询位置,然后在TextView上显示当前国家和城市. 1.activity_main.xml页面定义TextView显示城市名. activity_main.xml页面: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:too

  • Android开发之基于DialogFragment创建对话框的方法示例

    本文实例讲述了Android基于DialogFragment创建对话框的方法.分享给大家供大家参考,具体如下: /** * 使用DialogFragment创建对话框 * @description: * @author ldm * @date 2016-5-12 下午2:00:01 */ public class FragmentAlertDialog extends Activity { private Button button; @Override protected void onCre

  • PHP基于imap获取邮件实例

    本文实例讲述了PHP基于imap获取邮件的方法.分享给大家供大家参考.具体实现方法如下: imap是一款邮件交互访问的协议了,下面是实例主要利用php imap模块来快速获取邮件,列出所有目录,代码如下: 复制代码 代码如下: $host = '{imap.mail.yahoo.com:993/ssl}'; $user = 'user@yahoo.com'; $pass = 'password'; $inbox = imap_open($host, $user, $pass); $mailbox

  • Android基于Sensor感应器获取重力感应加速度的方法

    本文实例讲述了Android基于Sensor感应器获取重力感应加速度的方法.分享给大家供大家参考,具体如下: FETC项目指导老师提出了新的需求,想要在游戏地图中表现出用户用户当期移动的方向,再用GPS的话显然很不靠谱,所以想到了android强大的感应器... 很多移动设备都内置了感应器,android通过Sensor和SensorManager类抽象了这些感应器,通过这些类可以使用android设备的传感器 一 介绍Sensor类 SDK只有一句介绍"Class representing a

  • Android编程解析XML文件的方法详解【基于XmlPullParser】

    本文实例讲述了Android编程解析XML文件的方法.分享给大家供大家参考,具体如下: 前言 在学习Android的Framework层源码时,Android大量的使用XmlPullParser来解析xml文件的源码.因此,这里也顺道介绍一下XmlPullParser的使用. XML XML(eXtensible Markup Language)中文名为可扩展标记语言.标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等. 用途 XML设计用了传送及携带数据信息,

  • Android使用GPS获取用户地理位置并监听位置变化的方法

    本文实例讲述了Android使用GPS获取用户地理位置并监听位置变化的方法.分享给大家供大家参考,具体如下: LocationActivity.java /* LocationActivity.java * @author octobershiner * 2011 7 22 * SE.HIT * 一个演示定位用户的位置并且监听位置变化的代码 * */ package uni.location; import android.app.Activity; import android.content

随机推荐