2011-07-07 33 views
5

Tôi đang sử dụng này:cách tìm số đi trong quản lý điện thoại

public void onCallStateChanged(int state, String incomingNumber) 

được nghe:

telephonyManager.listen(listener,PhoneStateListener.LISTEN_CALL_STATE); 

Tôi muốn biết tất cả các cuộc gọi đi và đến nhưng bây giờ tôi chỉ nhận được cuộc gọi đến (khi thay đổi trạng thái đổ chuông). Bất cứ ai cũng có thể cho tôi biết khi nào tôi có thể phát hiện cuộc gọi đi và kết thúc của nó

Cũng có cách để mô phỏng các cuộc gọi đi trong trình mô phỏng Eclipse. đã có thể làm điều đó cho các cuộc gọi đến thông qua điều khiển giả lập trong nhật thực.

Trả lời

13

Sử dụng trình nghe phát sóng với mục đích android.intent.action.NEW_OUTGOING_CALL thông số chuỗi cho IntentFilter và đừng quên cấp quyền trong AndroidMenifest cho PROCESS_OUTGOING_CALLS. Điều này sẽ làm việc. Bất cứ khi nào có một cuộc gọi đi, một tin nhắn chúc mừng sẽ được hiển thị. Mã dưới đây.

public static final String outgoing = "android.intent.action.NEW_OUTGOING_CALL" ; 
IntentFilter intentFilter = new IntentFilter(outgoing); 
BroadcastReceiver OutGoingCallReceiver = new BroadcastReceiver() 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     // TODO Auto-generated method stub 
     String outgoingno = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); 
     Toast.makeText(context, "outgoingnum =" + outgoingno,Toast.LENGTH_LONG).show(); 
    } 
}; 
registerReceiver(brForOutgoingCall, intentFilter); 
1

Tạo một lớp mới, chúng ta hãy nói MyPhoneReceiver, mở rộng nó từ BroadcastReceiver, và thực hiện các phương pháp onReceive.

public class MyPhoneReceiver extends BroadcastReceiver{ 
    @Override 
    public void onReceive(Context context, Intent intent){ 

     String phoneNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER); 

    } 
} 

Trong lớp khác, chúng ta hãy nói, MainActivity.class bên trong phương pháp onCreate. ví dụ.

IntentFilter filter = new IntentFilter("android.intent.action.NEW_OUTGOING_CALL"); 
    MyPhoneReceiver myPhoneReceiver = new MyPhoneReceiver(); 
    registerReceiver(myPhoneReceiver,filter); 

Trong AndroidManifest.xml

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

và cũng trong AndroidManifest.xml, thêm:

<uses-permission 
    android:name="android.permission.PROCESS_OUTGOING_CALLS"> 
</uses-permission> 
Các vấn đề liên quan