1

電話状態リスナーに問題があります。イベントactivityから呼び出したい。onCallStateChanged電話がかかってきたら、電話をかけ、現在の電話番号のトランザクションを処理したいと思いますactivity(現在、着信によって取得されています)。しかし、次のコードを使用してアクティビティに行くことができませんでしShowPhoneStateDialogActivityた.私の間違いを修正してください. 前もって感謝します。私のコードは、

 case TelephonyManager.CALL_STATE_RINGING:
                Log.d("PHONE:", "RINGING");
                Log.w("Call STATE:", "RINGING");
                if (!sess.getCallActive()) {
                    sess.setCallActive(true);
                    sess.setActiveMobileNo(incomingCallNumber);
                    this.endActivecall();
                    Intent intent = new Intent(context,ShowPhoneStateDialogActivity.class).setAction("incomingNumber");
                    intent.putExtra("Phoneno", incomingCallNumber);
                    Log.i("CURRENT ACTIVITY",this.getClass().getSimpleName());
                    Log.i("CURRENT CONTEXT","Context:"+context);
                    //intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    context.startService(intent);
                    break;
                } else {
                    this.endActivecall();
                }
                break;

そしてendActivecall機能は、

public void endActivecall() {
        TelephonyManager telephony = (TelephonyManager) context
                .getSystemService(Context.TELEPHONY_SERVICE);
        try {
            Class c = Class.forName(telephony.getClass().getName());
            Method m = c.getDeclaredMethod("getITelephony");
            m.setAccessible(true);
            telephonyService = (ITelephony) m.invoke(telephony);
            // telephonyService.silenceRinger();
            telephonyService.endCall();
            Log.i("CALL STATE ACTION:", "Call end");
            Log.i("ACTIVE_MOBILENO:", sess.getActiveMobileNo());
        } catch (Exception e) {
            e.printStackTrace();
        }
4

1 に答える 1

2

コードの代わりに、代わりにcontext.startService(intent)呼び出してみてくださいcontext.startActivity(intent)

于 2013-02-25T10:49:08.937 に答える