2015-09-22 33 views
2

我收到來電詳細信息(Number,Name,Date)。但是如何獲得傳出的通話詳細信息。我寫了一個撥出電話詳細信息的代碼,但它會拋出NullPointerException。下面是我MyCallReceiver java文件和清單文件如何獲得日期和時間的去電號碼?

public void onReceive(Context context, Intent intent) { 

    this.context = context; 



    if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_RINGING)) { 

     String incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER); 

     Toast.makeText(context, "Call From : " + incomingNumber, Toast.LENGTH_LONG).show(); 

     doToast(getContactName(context, incomingNumber) + " " + incomingNumber); 
     String currentDateTimeString = DateFormat.getDateTimeInstance().format(new Date()); 
     doToast(currentDateTimeString +" "+incomingNumber); 


    } else if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_IDLE) || intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_OFFHOOK)) { 
     Toast.makeText(context, "DETECTED CALL HANG UP EVENT", Toast.LENGTH_LONG).show(); 

     String outgoingNumber=intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); 
     Toast.makeText(context,"Calling To :"+outgoingNumber,Toast.LENGTH_LONG).show(); 
    } 
} 
+0

清單在哪裏? – gmetax

+0

回答

1
public void onReceive(Context context, Intent intent) 
{ 
    String state=intent.getStringExtra(TelephonyManager.EXTRA_STATE); 

    if(state==null) 
    { 
     //Outgoing call 
     String number=intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); 
     Log.i("tag","Outgoing number : "+number); 
    } 
    else if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) 
    { 
     //Incoming call 
     String number = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER); 
     Log.i("tag","Incoming number : "+number); 
    } 
} 
+0

兄弟...一切都還好,但是,時間呢?和日期???,即使即時通訊也尋找同樣的事情。即時消息傳出號碼,但我需要確切的傳出呼叫時間。幫我出去! –

0

所有intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER)首先讓你呼出號碼,而手機狀態是空閒狀態,變爲「零」,而手機狀態更改爲OFF_HOOK。

最簡單的方法是在另一個onRecive發生之前保存數字。

+0

我已經使用String outgoingNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);在我的其他部分,但如果我得到錯誤 –

+0

HariRam你能告訴我我應該在哪裏更新我的代碼,以獲得傳出電話號碼 –

+0

林不知道,刪除off_hook條件。你可能會得到電話號碼。 – RAAAAM

-1

針對不同的事件(即傳入呼叫或傳出呼叫)創建單獨的監聽器可能會讓您的生活更輕鬆。對於傳出呼叫,而不是檢查TelephonyManager的狀態,您可能需要創建一個IntentFilter

IntentFilter filterCalls = new IntentFilter(); 
filterCalls.addAction(Intent.ACTION_NEW_OUTGOING_CALL); 
MyCallReceiver myCallReceiver = new MyCallReceiver(); 
registerReceiver(myCallReceiver, filterCalls); 

然後在你的onReceive你可以簡單地有:

String outgoingNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER) 

,並確保它會成功。