2011-02-08 35 views
6

Tôi đang làm việc trên ứng dụng tự khởi động Android về cơ bản phụ thuộc vào trạng thái thẻ SIM. Khi ứng dụng của tôi tự động khởi động, tôi cần nó để kiểm tra xem thẻ SIM đã được thay đổi hay chưa. Sau đó tôi so sánh SIM hiện tại với SIM trong quá khứ bằng cách lấy tùy chọn được chia sẻ. Nhưng ứng dụng trả về một ngoại lệ con trỏ null khi nhận được giá trị của thẻ SIM mới.Trình quản lý điện thoại Android để phát hiện sim

Tôi muốn phản ứng với trạng thái sim.

Khi tôi nhận được trạng thái SIM_STATE_READY Tôi muốn nhận trạng thái SIM mới từ trình quản lý điện thoại.

telMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); 
    int simState = telMgr.getSimState(); 

    switch (simState) 
    { 
     case (TelephonyManager.SIM_STATE_ABSENT): 
      System.out.println("*******************************************Sim State absent******************************"); 
      break; 
     case (TelephonyManager.SIM_STATE_NETWORK_LOCKED): 
      System.out.println("*******************************************SIM_STATE_NETWORK_LOCKED******************************"+sim); 
      break; 

     case (TelephonyManager.SIM_STATE_PIN_REQUIRED): 
      System.out.println("*******************************************SIM_STATE_PIN_REQUIRED******************************"+sim); 
     break; 
     case (TelephonyManager.SIM_STATE_PUK_REQUIRED): 
      System.out.println("*******************************************SIM_STATE_PUK_REQUIRED******************************"+sim); 
     break; 
     case (TelephonyManager.SIM_STATE_UNKNOWN): 
      System.out.println("*******************************************SIM_STATE_UNKNOWN******************************"+sim); 
     break; 
     case (TelephonyManager.SIM_STATE_READY): 
     { 

     } 
    break; 
    } 
    default: break; 
    } 

Tôi đang làm điều này nhưng không biết cách nghe SIM trạng thái tôi muốn khi SIM sẵn sàng để sau đó tôi có thể thực thi một số mã. Khi thiết bị khởi động, thiết bị luôn trả về "SIM_STATE_UNKNOWN" và việc thực hiện chương trình đã hoàn tất.

Hãy giúp tôi đạt được điều này.

Trả lời

0

Dưới mã sẽ giúp bạn lấy SIM nối tiếp Không

TelephonyManager mTelephonyMgr = 
(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); 

String sSimSerial = mTelephonyMgr.getSimSerialNumber(); 

thiết lập các quyền sau trên Android Manifest nộp

android.permission.READ_PHONE_STATE

+0

HI .. Tôi không có bất kỳ vấn đề trong khi nhận được sim không .. tôi muốn phản ứng trên tiểu bang sim .. –

+1

GetSimSerialNumber() hoạt động với điện thoại SIM kép như thế nào? – gonzobrains

1

Bạn thử ứng dụng của bạn trên trình giả lập Android? Có lẽ bạn phải thử ứng dụng của bạn trên điện thoại Android trực tiếp, tôi nghĩ rằng trình giả lập Android không thể hỗ trợ ứng dụng của bạn.

3

Nếu bạn muốn phản ứng với một sự thay đổi Sim bạn cần phải thiết lập một người biết lắng nghe:

final TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); 

    tm.listen(new PhoneStateListener() { 
     @Override 
     public void onServiceStateChanged(ServiceState serviceState) { 
      //Code in here executed on Sim State change 
     } 

     @Override 
     public void onDataConnectionStateChanged(int state) { 

     } 
Các vấn đề liên quan