2011-09-14 8 views
1

私はcallerIDが必要なアンドロイドアプリを作っています。おかげさまで 次のようにアンドロイドのgetCallerIDはプログラムによってどのようにすることができますか?

は、マニフェストファイルであなたの放送受信機を登録します:

<receiver android:name="MyOwnBroadcastReceiver"> 
      <intent-filter> 
       <action android:name="android.intent.action.PHONE_STATE" /> 
      </intent-filter> 
     </receiver> 

、次のステップのように行うことができ、あなたのコードでそれを実装することで、次のように

+0

を使用し、私はわからないが、これをチェックしてください[link] [1]それはあなたを助けるかもしれません [1]:http://stackoverflow.com/a/15564021/2492925 –

答えて

0

あなたは幅広いキャスト受信機を使用する必要があります

public class MyOwnBroadcastReceiver extends BroadcastReceiver { 

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

    final TelephonyManager telephony = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); 
    String INCOMING_NUMBER = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER); 
Log.e("incoming phone number is",""+INCOMING_NUMBER); 
    } 
    } 
3

を次のあなたは、BroadcastReceiverを実装し、このようなテレフォニーイベントを扱うことができます。

public class CallListener extends BroadcastReceiver { 


private static final String OUTGOING_CALL_ACTION = Intent.ACTION_NEW_OUTGOING_CALL; 


private static boolean isOutgoingCall; 
private static String savedNumber; 

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

    int event = -1; 
    String action = intent.getAction(); 


    if (action.equals(OUTGOING_CALL_ACTION)) { 

     // get phone number from bundle 
     savedNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); 
     isOutgoingCall = true; 
    } 
    else 
    { 
     //gets phone's state 
     String phoneState = intent.getStringExtra(TelephonyManager.EXTRA_STATE); 

     if(phoneState.equals(TelephonyManager.EXTRA_STATE_RINGING)) 
     { 
      isOutgoingCall = false; 

      //gets the phone number of this incoming call 
      savedNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER); 
      Log.d(TAG, String.format("Received phone call from [%s]", savedNumber)); 

     } 
     else if(phoneState.equals(TelephonyManager.EXTRA_STATE_IDLE)) 
     { 
       // call ended 
      Log.i(TAG, TelephonyManager.EXTRA_STATE_IDLE); 
      savedNumber = null; 
      event = InCallManager.CALL_STATE.EVENT_IDLE; 
     } 
     else if(phoneState.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)) 
     { 
       // call answered 
      if(isOutgoingCall) { 
       event = InCallManager.CALL_STATE.EVENT_OUTCALL; 
       isOutgoingCall = false; 
      } 
      else { 
       event = InCallManager.CALL_STATE.EVENT_INCALL; 
      } 

     } 

    } 


} 

}

マニフェストで

だけ追加します。

<receiver android:name="receivers.CallListener"> 
     <intent-filter> 
      <action android:name="android.intent.action.PHONE_STATE" /> 
     </intent-filter> 
</receiver> 
+0

なぜisOutgoingCallを宣言したのですか?savedNumber変数は静的ですか? –

0

を放送受信機のクラスを作成し、着信意図....

public class Sms_Res extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     // TODO Auto-generated method stub 

     String num=null; 

     num=intent.getStringExtra("incoming_number"); 
     Toast.makeText(context,num, Toast.LENGTH_LONG).show(); 


    } 

} 
関連する問題