2011-07-20 56 views
-1

我正在嘗試打印模擬狀態到屏幕。目前我似乎無法完成它的工作。 我想要做的是打印,如果SIM卡被鎖定或沒有。Android獲取Sim狀態

我已使用該代碼

TelephonyManager manager = (TelephonyManager) Context.getSystemService(Context.TELEPHONY_SERVICE); 
    int state = manager.getSimState(); 
    answer1.setText(state); 

但logcat的輸出是

ERROR/AndroidRuntime(213):未捕獲的處理程序:線程主退出由於未捕獲的異常 ERROR/AndroidRuntime( 213):java.lang.RuntimeException:無法啓動活動ComponentInfo {com.qm/com.qmQ}:java.lang.NullPointerException 錯誤/ AndroidRuntime(213):at android.app.ActivityThread.performLaunchActivity(ActivityThread.java: 2401) ERROR/AndroidRuntime(213):at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417) ERROR/AndroidRuntime(213):at android.app.ActivityThread.access $ 2100(ActivityThread.java:116) ERROR/AndroidRuntime(213):at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1794) ERROR/AndroidRuntime(213):at android.os.Handler.dispatchMessage(Handler.java:99) ERROR/AndroidRuntime( 213):at android.os.Looper.loop(Looper.java:123) ERROR/AndroidRuntime(213):at android.app.ActivityThread.main(ActivityThread.java:4203) ERROR/AndroidRuntime(213):at java.lang.reflect.Method.invokeNative(Native Method) ERROR/AndroidRuntime(213):at java.lang.reflect.Method.invoke(Method.java:521) ERROR/AndroidRuntime(213): at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:791) ERROR/AndroidRuntime(213):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549) ERROR/AndroidRuntime(213):在dalvik.system.NativeStart.main(本機方法) 錯誤/ AndroidRuntime(213):導致:java.lang.NullPointerException 錯誤/ AndroidRuntime(213):at com.qmQonCreate(Q。在Android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123) 錯誤/ AndroidRuntime(213):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)錯誤/ AndroidRuntime(213) 錯誤/ AndroidRuntime(213):... 11更多

77號線是

TelephonyManager經理=(TelephonyManager)

+0

那是造成麻煩的線?我將前兩行復制到示例應用程序中,記錄了「狀態」值,運行它,並且沒有引發異常。 –

+0

你能否將你的java文件複製並粘貼到答案中。如果我能得到它,那麼我會接受這個答案。歡呼的幫助。 – Somk

+0

'getSystemService'不是一個靜態方法,你應該在Context.getSystemService中放置Context來查看是否有幫助。 – schwiz

回答

0

你似乎在傳遞一個int到需要一個字符串的函數。

更換

answer1.setText(state);

answer1.setText(Integer.toString(state));

+0

如果這是問題,它不應該編譯 – schwiz

+0

它可能會編譯,因爲一些像android上的'TextView'的視圖可以接受一個指向特定字符串的整數參數(資源ID)。但是,傳遞的參數不是資源ID,並且可能在從資源(它不存在時)檢索字符串時導致錯誤。 – mopsled

+0

如果是這種情況,它會有意想不到的結果,但不會拋出NullPointerException – schwiz

-1

,如果你已經通過調用

answer.setText(state) 
設置你的清單文件的許可READ_PHONE_STATE,也應檢查

喲你打電話給TextView的

setText(int resId) 

方法,它正在尋找一個文本資源與提供的ID。