从广播接收android中检索出的号码



我正在尝试为外呼创建自定义屏幕。我想要一个电话号码

我正在看这个链接,它使用一个单独的broadreceiver进行传入和传出。

http://goo.gl/YUD1b5

但是不工作。呼叫时收到错误信息

java.lang.NullPointerException: println needs a message

我有一个广播接收器,它有清单:

     <receiver
        android:name="com.honey.ringer.PhoneListenerBroad"
        android:priority="999"
        android:enabled="true" >
        <intent-filter>
            <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
            <action android:name="android.intent.action.PHONE_STATE" />
        </intent-filter>
    </receiver>

当我呼出时,广播接收器被呼叫,但我无法检索出呼出的电话号码。我不知道该怎么做:

这是广播接收器文件:

public void onReceive(Context context, Intent intent) 
 {
    c = context;
    try
    {
        TelephonyManager tmgr = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        MyPhoneStateListener PhoneListener = new MyPhoneStateListener();
        tmgr.listen(PhoneListener, PhoneStateListener.LISTEN_CALL_STATE);
    }
    catch (Exception e) 
    {
        Log.e("Phone Receive Error", " " + e);
    }
}
private class MyPhoneStateListener extends PhoneStateListener
{
    public void onCallStateChanged(final int state, final String incomingNumber) 
    {
        Handler callActionHandler = new Handler();
        Runnable runRingingActivity = new Runnable() 
        {
            @Override
            public void run() 
            {
                Intent intentPhoneCall = new Intent(c, AcceptMakeCall.class);
                intentPhoneCall.putExtra("incomingnumber", incomingNumber);
                intentPhoneCall.putExtra("state", state);
                intentPhoneCall.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                c.startActivity(intentPhoneCall);
            }
        };
        if (state == 1)
        {
            callActionHandler.postDelayed(runRingingActivity, 100);
        }
        if (state == 0) 
        {
            callActionHandler.removeCallbacks(runRingingActivity);
        }
        if (state == 2)
        {
            /*callActionHandler.postDelayed(runRingingActivity, 100);*/

        }
    }
}
谁能帮我拿一下电话号码吗?
in your onRecieve

if (intent.getAction()
            .equals("android.intent.action.NEW_OUTGOING_CALL")) {
String number=intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); 
Log.e("Number=",number);
}

and using permission:
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
This worked for me.Hope it works for you also

最新更新