手机SIM卡绑定
1) 如果是给Buttonxml中布局文件中配置点击事件,只需要
android:onClick="bindSim"一句就可以了 但如果是给TextView、ImageView或者布局文件(如RelativeLayout)配置点击事件,那么需要加上两句: android:clickable="true"
android:onClick="bindSim"2) TelephonyManager.getLine1Number(),只能拿到电信CDMA号段的号码,原因是号码写到该SIM卡中去了,如果没有写进去也拿不到,中国移动和联通的拿不到,绝大多数是null 3) 可以使用TelephonyManager.getSimSerialNumber(),获取sim卡背面的序列号,该号码可以到运营商查到sim卡号码,该号码唯一。 4) TelephonyManager.getLine1Number()不可用,市面上的软件怎么获取 // 来电通 建行手机客户度 - 通过在后台发送一条短信来获取手机号码 // 申请移动联通的接口 wap - 也可以获取到手机号码 |
绑定sim卡步骤: 1、判断是否已经绑定isBindSim() /**
* 2、判断SIM卡是否已经绑定了
* @return true表示已经绑定,false表示没有绑定
*/
public boolean isBindSim() {
String simSerialNumber = spf.getString("simSerialNumber", "");
return !TextUtils.isEmpty(simSerialNumber);
} 2、如果没有绑定,那么绑定,在SharedPreferences中存入信息 3、如果绑定了,那么解除绑定(),去掉SharedPreferences中存入的信息 /**
* 1、绑定和解除绑定SIM卡的操作
*/
public void bindSim(View view) {
if (isBindSim()) {// true表示绑定,然后,点击进行解绑操作
Log.i(TAG, "已经绑定sim卡,进行判断现在的sim卡和spf中的sim卡号是否一致。");
Editor edit = spf.edit();
edit.putString("simSerialNumber", "");
edit.commit();
iv_setup2_status.setImageResource(R.drawable.wizard_unlock);
} else {// false表示未绑定,点击进行绑定操作
Log.i(TAG, "没有绑定sim卡,进行绑定sim卡操作!");
// tm.getLine1Number(); //只能获取电信CDMA段的号码,联通和移动的sim卡获取不到,返回的是用户sim卡对应的手机号码 绝大多数返回的是空
String simSerialNumber = tm.getSimSerialNumber();//获取sim卡背面的序列号,该号码可以到运营商查到sim卡号码
Editor edit = spf.edit();
edit.putString("simSerialNumber", simSerialNumber);
edit.commit();
iv_setup2_status.setImageResource(R.drawable.wizard_lock);
}
}4、在Activity加载的时候进行判断,如果绑定了,加载绑定wizard_lock的图标,没有绑定,加载没有绑定wizard_unlock图标。 if (isBindSim()) {
iv_setup2_status.setImageResource(R.drawable.wizard_lock);
} else {
iv_setup2_status.setImageResource(R.drawable.wizard_unlock);
}
|
结果: |
|
权限: <uses-permission android:name="android.permission.READ_PHONE_STATE"/> |