1
ブロードキャスト受信者を使用して着信を受信しようとしています。私は、通話が終了したときに通話を登録したい。以下のコードは、同じ番号(過去の呼び出しの問題ではありません)で、各状態(アイドル状態、リンギング状態のオフフック)を複数回表示します。それはphonestatelistnerがサービス内で呼ばれているからです。ブロードキャスト受信者とphonestatelistener
public class IncomingCallReceiver extends BroadcastReceiver {
int stateString =0;
int prevStat = 0;
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
if(null == bundle)
return;
String state = bundle.getString(TelephonyManager.EXTRA_STATE);
if(state.equalsIgnoreCase(TelephonyManager.EXTRA_STATE_RINGING))
{
String phonenumber = bundle.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
String info = "Detect Calls sample application\nIncoming number: " + phonenumber;
Toast.makeText(context, info, Toast.LENGTH_LONG).show();
}
TelephonyManager telephony = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
//CustomPhoneStateListener customPhoneListener = new CustomPhoneStateListener();
PhoneStateListener listener = new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
String p = incomingNumber;
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
prevStat = stateString;
stateString = 1;
Log.i("ON CALL STATE CHANGED","IDLE");
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
Log.i("ON CALL STATE CHANGED","OFFFHOOK");
prevStat = stateString;
stateString = 2;
break;
case TelephonyManager.CALL_STATE_RINGING:
prevStat = stateString;
stateString = 3;
Log.i("ON CALL STATE CHANGED","RINGING");
break;
}
if(prevStat == 2 && stateString == 1)
{
Log.i("REGISTER A CALLL","==" +p);
}
}
};
telephony.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);
}
}
私も自分のコードが届かなかったすなわち、別のクラスにphonestatelistenerと同じことをしようとしたが、それが呼び出されていませんでした。私のマニフェストファイルには受信者が登録されていますが、phonestatelistenerの宣言はありません。それは登録されますか?
解決策がはっきりしていても、アンドロイドのものに新しいことは申し訳ありません。 すべてのヘルプは高く評価され:)
チェックこの回答を:http://stackoverflow.com/a/5949116/438466 – Rabi
あなたを開いたことを確認してくださいあなたがそれをインストールした後のアプリ。ユーザーが明示的にアプリを開くまで、アプリは停止状態です。 これを参照してください:http://stackoverflow.com/a/9955247/786462 これはあなたのBroadcastReceiverが呼び出されていないように見えるかもしれません。 – DataDino