android2.2應用開發之IccCard(sim卡或USIM卡)

來源:互聯網
上載者:User

 

     如果要做android通訊錄的連絡人的機卡混排顯示,由於手機卡類型的不同,導致手機卡儲存容量以及可以儲存資訊不同,就要涉及到android去讀Icc卡的資訊。

      一般的sim卡只能儲存姓名跟一個電話號碼,而USIM卡還可以存多個電話號碼跟郵箱,所以編輯卡上連絡人的時候應該動態去布局,或者應用可以去寫死,讓USIM卡的儲存資訊與SIM卡一致。

     由於本人是在源碼上開發的,用SDK開發的朋友有些類或方法以及屬性可能引用不到,這是由於用的Google沒有公開的API導致,望大家不要莫名其妙。

      1、讀取ICC卡的類型:

    由於我只需要去區分sim和USIM,所以返回的不是USIM的我都視為sim,這個大家可以根據需要自己去改。

    import android.os.SystemProperties;

    public  String getSimType(){
         if (SystemProperties.get("gsm.sim.card.type", "SIM").contentEquals ("USIM")){
             return "USIM";
         }else{
             return "SIM";
         }
    }

      2 、是否有ICC卡:

            import android.telephony.TelephonyManager;

            boolean hasIcc = ((TelephonyManager) getSystemService

                            (Context.TELEPHONY_SERVICE)).hasIccCard();

      

       3、何時導手機卡上的連絡人既sim卡連絡人匯入的時機:

         一般大家會想到開機就導唄,接收boot_completed的訊息然後啟動一個service去導,那我這裡告訴大家一個系統發的廣播,比boot_completed時間發出的更早些。

注意:這個廣播只有插入手機卡的情況下才會去播出,沒有插卡式不會播出去的。

import com.android.internal.telephony.IccCard;
import com.android.internal.telephony.TelephonyIntents;

 

[java]   
 
public void onReceive(Context con, Intent intent) { 
        Log.i(TAG,"receive"); 
        if(intent.getAction().equals(TelephonyIntents.ACTION_SIM_STATE_CHANGED)){ 
            Log.i(TAG,"SIM_STATE_CHANGED"+intent.getStringExtra(IccCard.INTENT_KEY_ICC_STATE)); 
            if(intent.getStringExtra(IccCard.INTENT_KEY_ICC_STATE).equals(IccCard.INTENT_VALUE_ICC_LOADED)){ 
                  Log.i(TAG,"READY to start service"); 
                  Intent i = new Intent(con,SimContactsService.class); 
                  i.putExtra("ICC_LOADED", "READY"); 
                  con.startService(i); 
            } 
        } 
   } 


 

對,這個廣播即TelephonyIntents.ACTION_SIM_STATE_CHANGED,字串是:"android.intent.action.SIM_STATE_CHANGED",系統在發這個action廣播的時候會在intent裡附加一個IccCard.INTENT_KEY_ICC_STATE的資料,說到這裡大家應該知道IccCard會有好幾種狀態,具體多少大家可以去查源碼,我這裡當狀態為IccCard.INTENT_VALUE_ICC_LOADED時表明手機卡已經裝載好,可以去讀手機卡的資料了。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.