2012-02-23 72 views
5

với statrtActivity(callIntent), cuộc gọi đi và sau đó tôi phải đợi vài giây và kết thúc tự động. để kết thúc cuộc gọi của tôi tôi đã lấy mycalss mở rộng Broadcastreceiver sau đó trong đó onreceive() tôi implement.in rằng phương pháp tôi đã nhận chỉ để thiết lập số cũ và newnumber và bánh mì nướng được in ấn. Điều tôi muốn chính xác là kết thúc cuộc gọi những gì tôi cần viết. và cách gọi phương thức đánh lừa từ lớp học của tôi? plase giúp tôi. tôi đã không đi đâu cả.cách kết thúc cuộc gọi đi của tôi.

@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? 
       } 

Trả lời

3

Bạn có thể thử này:

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

tôi đã cố gắng mã của bạn nhưng điều đó dường như không kết thúc cuộc gọi. Tôi đã sử dụng 'TelephonyManager.CALL_STATE_OFFHOOK' để kiểm tra trạng thái và sau đó kết thúc nó. Bất kỳ ý tưởng? –

0

bạn chỉ cần hủy bỏ cuộc gọi đi thông qua mã sau

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' là null ... –

+0

Thêm quyền" PROCESS_OUTGOING_CALLS "nếu bạn không thêm nó? –

+0

Vâng tôi tìm ra .. Tôi đã sử dụng phát sóng thay đổi trạng thái điện thoại thay vì gửi đi .. Cảm ơn btw .. –

Các vấn đề liên quan