2012-03-12 23 views
0

我正在從廣播接收方獲取傳出號碼,並嘗試通過方法getNumber()將其發送到活動,但是該值顯示爲空。 IM低於在活動課我的串碼PHONENUMBER是空新手的錯誤:試圖將傳出號碼傳遞給活動

BroadcastReciever類:

public class OutgoingBroadcastReceiver extends BroadcastReceiver { 

String phonenumber = null; 

@Override 
public void onReceive(Context context, Intent intent) { 


    phonenumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); 
    if (intent.getAction().equals("android.intent.action.NEW_OUTGOING_CALL")) 
    { 


     Log.i("System out", "IN OUTGOING CALL......... :IF"); 
     MyPhoneStateListener phoneListener = new MyPhoneStateListener(
        context); 
      TelephonyManager telephony = (TelephonyManager) context 
        .getSystemService(Context.TELEPHONY_SERVICE); 
      telephony.listen(phoneListener, 
        PhoneStateListener.LISTEN_CALL_STATE); 
    } else {   
      Log.i("System out", "IN INCOMING CALL.........:else:receiver");   




} 
public String getNumber() 
{ 
    return phonenumber; 
} 

活動課:

public class OutgoingCallScreenDisplay extends Activity 

{

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
    setContentView(R.layout.outgoing_main); 
    OutgoingBroadcastReceiver outreciever = new OutgoingBroadcastReceiver(); 

    String phonenumber= outreciever.getNumber();//this is coming out NULL needs to be the outgoing number 






} 

回答

0

電話沒有。爲null,因爲您正在創建一個未啓動其值的broadcastreceiver的新實例。你可以收到一個電話號碼。在「的onReceive」而已,從那裏ü應該如果u想通過它進一步

請參閱啓動一個新的活動:

首先你shud或者使用的廣播接收器或手機監聽狀態。在你的情況下,如果你使用廣播接收器,然後你簡單地需要額外的意圖:EXTRA_PHONE_NUMBER
和權限:進程outgoin調用。就是這樣.....

+0

謝謝,這使得總體感!但我傳遞給一個PhoneStateListner之前,我發送到活動,所以我不能直接傳遞給活動...任何想法? – user1163234 2012-03-12 08:40:09

+0

解決它與我的phonestatelistner作爲我的BroadcastReciever的內部類 – user1163234 2012-03-12 08:48:47

0

兩件事情馬上來介意:

  • onReceive方法需要被調用之前,你可以得到的電話號碼。
  • 您指定的電話號碼一個局部變量,而不是實例成員。
+0

調試後,我在BroadcastReciever中正確獲取值。我認爲它是因爲你說的第二件事,但我已經從本地變量中刪除了字符串,但仍然是相同的結果....感謝您的時間 – user1163234 2012-03-12 08:35:53