[mobilesafe] 13_手机SIM卡绑定-WizardSetupActivity2

Android 4.0

手机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);
        }
结果:


WizardSetupActivity2.java
package cn.zengfansheng.mobilesafe;
 
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences.Editor;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
 
/**
* 7、设置向导2:WizardSetupActivity2界面
* @author hacket
*/

public class WizardSetupActivity2 extends BaseWizardActivity {
 
    private static final String TAG = "WizardSetupActivity2";
    private TelephonyManager tm;
    private ImageView iv_setup2_status;
 
    @Override
    public void setView() {
        this.setContentView(R.layout.activity_wizard_setup2);
        tm = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
        iv_setup2_status = (ImageView) this.findViewById(R.id.iv_setup2_status);
        if (isBindSim()) {
            iv_setup2_status.setImageResource(R.drawable.wizard_lock);
        } else {
            iv_setup2_status.setImageResource(R.drawable.wizard_unlock);
        }
    }
 
    /**
     * 2、判断SIM卡是否已经绑定了
     * @return true表示已经绑定,false表示没有绑定
     */

    public boolean isBindSim() {
        String simSerialNumber = spf.getString("simSerialNumber", "");
        return !TextUtils.isEmpty(simSerialNumber);
    }
 
    /**
     * 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卡对应的手机号码 绝大多数返回的是空
            // 来电通 建行手机客户度
            // 申请移动联通的接口 wap
            String simSerialNumber = tm.getSimSerialNumber();//获取sim卡背面的序列号,该号码可以到运营商查到sim卡号码
            Editor edit = spf.edit();
            edit.putString("simSerialNumber", simSerialNumber);
            edit.commit();
            iv_setup2_status.setImageResource(R.drawable.wizard_lock);
        }
    }
 
    @Override
    public void next(View view) {
        Intent intent = new Intent(this, WizardSetupActivity3.class);
        startActivity(intent);
        this.finish();
        overridePendingTransition(R.anim.tran_next_in, R.anim.tran_next_out);
    }
 
    @Override
    public void previous(View view) {
        Intent intent = new Intent(this, WizardSetupActivity1.class);
        startActivity(intent);
        this.finish();
        overridePendingTransition(R.anim.tran_pre_in, R.anim.tran_pre_out);
    }
 
}
权限:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>