处理android中的来电

时间:2012-07-20 12:49:52

标签: android

在我的应用程序中,我想检测来电,我想用自定义布局隐藏默认来电布局,现在我已设法获得来电状态,但我无法隐藏默认来电屏幕...下面是我的代码和我的安卓文件...任何帮助将不胜感激..

@Override
public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    Log.i("DEBUG", "on recive called");
    String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
    String number = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);

    if (TelephonyManager.EXTRA_STATE_RINGING.equals(state))
    {
        abortBroadcast();
        Log.d("MPR", "Its Ringing [" + number + "]");
        //start activity
        Intent i = new Intent();
        i.setClassName("com.ezest.callerid", "com.ezest.callerid.CustomCallActivity");
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(i);
    }

    if (TelephonyManager.EXTRA_STATE_IDLE.equals(state))
    {
        Log.d("MPR", "Its Idle");
    }
    if (TelephonyManager.EXTRA_STATE_OFFHOOK.equals(state))
    {
        Log.d("MPR", "Its OffHook");
    }

}

清单

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >

    <receiver android:name="MYPhoneStateListener">
        <intent-filter android:priority="999999">
            <action android:name="android.intent.action.PHONE_STATE"></action>
        </intent-filter>
    </receiver>
    <activity
        android:label="@string/app_name"
        android:name=".CallerIDActivity" >
        <intent-filter >
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity android:name="CustomCallActivity">
    </activity>

</application>

1 个答案:

答案 0 :(得分:0)

当定义的动作发生时,android操作系统向所有已定义的broadcastreceiver发送广播以进行此操作。它根据优先顺序完成这项工作。我可以看到你做到了。复制要取消广播的代码。

abortBroadcast()

Android操作系统将停止向其他广播接收者广播

相关问题