2012-02-23 7 views
5

statrtActivity(callIntent)と呼ぶと、数秒待って自動的に終了する必要があります。私の呼び出しを終了するmycalssを取ったBroadcastreceiverを延長してonreceive()私はそのメソッドをimplement.in私は古い番号とnewnumberを設定し、トーストが印刷されている。 私が欲しいのは、私が書く必要があるものを終わらせることです。私のクラスから受信方法を呼び出す方法は?私を助けてください。私はどこにも行きませんでした。あなたはこの試みること私の発信通話を終了する方法。

@Override 
       public void onReceive(Context context, Intent intent) {         
        final String oldNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);   
        this.setResultData(newPhNnumber);             
        final String newNumber = this.getResultData(); 
        if((newNumber!=null)&&(newNumber!=oldNumber)) 
        { 
        String msg = "Intercepted outgoing call. Old number " + oldNumber + ", new number " + newNumber; 
        Toast.makeText(context, msg, Toast.LENGTH_LONG).show(); 
        this.abortBroadcast();----> what it does? 
       } 

答えて

3

TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); 
try { 
    Class c = Class.forName(tm.getClass().getName()); 
    Method m = c.getDeclaredMethod("getITelephony"); 
    m.setAccessible(true); 
    ITelephony telephonyService = (ITelephony) m.invoke(tm); 

    telephonyService.endCall(); 

} catch (Exception e) { 
    e.printStackTrace(); 
} 
+0

を通じて発信通話を中止し、私はあなたのコードを試してみましたが、それは通話を終了していないようです。私は 'TelephonyManager.CALL_STATE_OFFHOOK'を使って状態をチェックし、それを終了しました。何か案が? –

0

を使用すると、単純に次のコード

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

    if (intent.getAction() 
      .equals("android.intent.action.NEW_OUTGOING_CALL")) { 

     phoneNo = intent 
       .getStringExtra(Intent.EXTRA_PHONE_NUMBER); 

     if (phoneNo.isBlocked(blockNo)) { 
      setResultData(null); 

     } 
    } 
} 
+0

'phoneNo'はヌルです... –

+0

この「PROCESS_OUTGOING_CALLS」権限を追加していない場合はこれを追加しますか? –

+0

ええ、私は把握..私は、発信の代わりに電話の状態変更のブロードキャストを使用しました。ありがとうbtw .. –

関連する問題