2012-03-12 2 views
0

ブロードキャスト受信者から発信番号を取得していて、getNumber()メソッドを介してアクティビティに送信しようとしていますが、値がnullになっています。アクティビティクラスでは以下の私のコードをイム文字列PHONENUMBERがnullルーキーミス:発信番号をアクティビティに渡そうとしています

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

電話番号。値が初期化されていないbroadcastreceiverの新しいインスタンスを作成しているため、nullです。あなたは電話番号を受け取ることができます。

まずあなたはどちらかshud放送受信機や携帯電話の状態リスナーを使用しますuはさらに

参照を渡したい場合はそこから、ONLY「onReceive」にuが新しい活動を開始する必要があります。あなたがブロードキャストレシーバを使用している場合、EXTRA_PHONE_NUMBER
と許可:プロセスアウトゴーイングコール。それは..... .....

+0

ありがとう、それは総意味を作る!私はアクティビティに送る前にそれをPhoneStateListnerに渡しているので、アクティビティに直接渡すことはできません。 – user1163234

+0

私のPhonestatelistnerを内部クラスとしてBroadcastRecieverに解決しました。 – user1163234

0

2つのことがすぐに来ます心:

  • 電話番号を取得するには、onReceiveメソッドを呼び出す必要があります。
  • 電話番号をインスタンス変数ではなくローカル変数に割り当てています。
+0

私はBroadcastRecieverで正しく値を取得しています。私はあなたが言った2番目の事のためだと思うが、私はローカル変数から文字列を削除しましたが、まだ同じ結果....あなたの時間をありがとう – user1163234

0

使用putExtraアクティビティにデータを渡したい場合は

関連する問題