簡體   English   中英

來自來電的電話號碼無法正常工作

[英]phone number from incoming call not working android

我有一個PhoneStateListener ,用於在通話結束后打開應用程序。 它工作正常,但我還需要獲取來電號碼,並且使用incomingNumber字符串不起作用。 這是我的代碼:

public class PhoneStateManager extends PhoneStateListener{

    public static Boolean usingPhone = false;
    private MainActivity mainactivity;

    public PhoneStateManager(MainActivity main){
        mainactivity = main;
    }

    @Override
    public void onCallStateChanged(int state, String incomingNumber) {
        switch (state) {
        case TelephonyManager.CALL_STATE_IDLE:
            Log.d("DEBUG", "IDLE");
            if(usingPhone){
                Log.d("DEBUG", "number (PSM): " + incomingNumber);
                mainactivity.askQuestion(incomingNumber);
            }
            usingPhone = false;
            break;
        case TelephonyManager.CALL_STATE_OFFHOOK:
            Log.d("DEBUG", "OFFHOOK");
            usingPhone = true;
            break;
        case TelephonyManager.CALL_STATE_RINGING:
            Log.d("DEBUG", "RINGING");
            usingPhone = false;
            break;
        }
    }
}

撥打電話時,LogCat語句會打印出以下內容:

在此處輸入圖片說明

這是我初始化PhoneStateManger的方法:

TelephonyManager tManager = (TelephonyManager) 
          getSystemService(Context.TELEPHONY_SERVICE);
PhoneStateManager listener = new PhoneStateManager(this);
tManager.listen(listener, PhoneStateManager.LISTEN_CALL_STATE);

我不知道為什么數字總是為空。 有任何想法嗎?

您必須將傳入號碼保存為振鈴或摘機

public class PhoneStateManager extends PhoneStateListener{

public static Boolean usingPhone = false;
private MainActivity mainactivity;
private String mIncomingNumber;

public PhoneStateManager(MainActivity main){
    mainactivity = main;
}

@Override
public void onCallStateChanged(int state, String incomingNumber) {
    switch (state) {
    case TelephonyManager.CALL_STATE_IDLE:
        Log.d("DEBUG", "IDLE");
        if(usingPhone){
            Log.d("DEBUG", "number (PSM): " + mIncomingNumber);
            mainactivity.askQuestion(mIncomingNumber);
        }
        usingPhone = false;
        break;
    case TelephonyManager.CALL_STATE_OFFHOOK:
        Log.d("DEBUG", "OFFHOOK");
        usingPhone = true;
        break;
    case TelephonyManager.CALL_STATE_RINGING:
        Log.d("DEBUG", "RINGING");
        mIncomingNumber = incomingNumber;
        usingPhone = false;
        break;
    }
}

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM