2017-07-04 16 views
1

着信コールと発信コールを区別するにはどうすればよいですか。 の両方の場合、モバイルはオフフック状態ですが、着信コールの場合、呼び出し状態になり、オフフック状態になります。さまざまな電話の状態の区別

このコードを試しましたが、効果的ではありません。リンギング変数は常にfalseです。事前に と私は発信番号を取得することができますどのように別の質問があります。..おかげ

public class states extends BroadcastReceiver { 
boolean Ringing = false; 

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

if (state.equalsIgnoreCase(TelephonyManager.EXTRA_STATE_RINGING)) { 
Toast.makeText(context, "Ringing", Toast.LENGTH_SHORT).show(); 
     Ringing = true ; 
} 
    else if (state.equalsIgnoreCase(TelephonyManager.EXTRA_STATE_OFFHOOK)) { 
     if (Ringing) { 
      // do nothing 
     }else{ 
      // do something 
} 
else if (state.equalsIgnoreCase(TelephonyManager.EXTRA_STATE_IDLE)) { 
     Ringing = false ; 
    } 
} 
} 

これらは私の権限ある

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.RECORD_AUDIO" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> 
<uses-permission android:name="android.permission.CALL_PHONE" /> 
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 


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

を取得するための

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

。ではない? –

+0

いいえ、私が電話している番号を意味します.. – user8151481

+0

私はちょうど答えを編集し、電話機をチェックします。電話番号 –

答えて

0

発着信の分化のためには、放送受信機を使用することができますこれは 受信者に<action android:name="android.intent.action.NEW_OUTGOING_CALL" />を追加し、あなたのonReceive()メソッドで処理してください。あなたがあなた自身の連絡先の番号を取得するために喜んでいる意味コール番号を、ougoingあなたの質問のために発信番号

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

私はこれを試しましたが、 "ヌル"状態はなく、オフフックまたはアイドル状態です。状態をif(state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)||状態に変更しても)です。私はアウトナンバーを取得しました.. – user8151481

+0

私のアクセス許可を表示します –

+0

これはうまくいきました...私はこのアクセス許可を追加しました。使用許諾アンドロイド:名前= "android.permission.PROCESS_OUTGOING_CALLS" />ヌル状態、および発信番号...あなたの助けに感謝 – user8151481

関連する問題