Android 广播接收机;处理呼出的电话

Android 广播接收机;处理呼出的电话,android,broadcastreceiver,Android,Broadcastreceiver,我试图实现一个广播接收器,但它不工作。在虚拟设备上,此应用程序工作正常。在我的真实设备上(Galaxy Nexus-Android 4.1.2),它什么都不做!在real device的日志中,没有关于应用程序的错误。有什么想法吗 Outgoingcallinterceptor.java package com.scoutman.lcr; import android.content.BroadcastReceiver; import android.content.Context; impo

我试图实现一个广播接收器,但它不工作。在虚拟设备上,此应用程序工作正常。在我的真实设备上(Galaxy Nexus-Android 4.1.2),它什么都不做!在real device的日志中,没有关于应用程序的错误。有什么想法吗

Outgoingcallinterceptor.java

package com.scoutman.lcr;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;

public class Outgoingcallinterceptor extends BroadcastReceiver 
{
    @Override
    public void onReceive(Context context, Intent intent) 
    {       
        if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) 
        {
            Log.d("INFO","HELLO!!!");
            Toast.makeText(context, "Hello!!!", Toast.LENGTH_LONG).show();
        }          
    }
}
AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.scoutman.lcr" android:versionCode="1" android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="16" />

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />

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

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

</application>

</manifest>

日志:

11-24 20:18:39.077:I/ActivityManager(306):从pid 500开始{act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]flg=0x10200000 cmp=com.android.contacts/.activities.DialtactsActivity bnds=[401040][1681168]u=0}
11-24 20:18:40.295:D/dalvikvm(306):等待并发GC阻塞0毫秒
11-24 20:18:40.311:D/dalvikvm(1173):GC_并发释放295K,6%释放12162K/12807K,暂停15ms+4ms,总计55ms
11-24 20:18:40.381:D/dalvikvm(306):GC_显式释放761K,24%释放20098K/26183K,暂停3ms+9ms,总计89ms
11-24 20:18:43.412:I/ActivityManager(306):从pid 11614开始{act=android.intent.action.CALL_PRIVILEGED dat=tel:xxxxxxxxxxxx flg=0x10000000 cmp=com.android.phone/.privilegedoutgoongcallbroadcaster(有额外功能)u=0}
11-24 20:18:43.506:D/PhoneUtils(483):Check和CopyPhoneProviderExtras:缺少部分或所有附加项。
11-24 20:18:43.522:D/PhoneUtils(483):Check和CopyPhoneProviderExtras:缺少部分或所有附加项。
11-24 20:18:43.522:I/ActivityManager(306):从pid 483开始{act=com.android.phone.SIP_SELECT_phone dat=tel:xxxxxxxxxxxxx flg=0x10000000 cmp=com.android.phone/.SipCallOptionHandler(有额外功能)u=0}
11-24 20:18:43.655:D/CallController(483):placeCall()。。。intent=intent{act=android.intent.action.CALL dat=tel:xxxxxxxxxxxx(有额外功能)}
11-2420:18:43.655:D/PhoneUtils(483):placeCall()。。。号码:XXXXXXXXXX,GW:null,紧急情况?假的
11-24 20:18:43.662:I/AudioService(306):AudioFocus请求AudioFocus()来自AudioFocus_,用于电话、铃声和通话
11-24 20:18:43.662:E/audio_hw_primary(131):进入呼叫状态,呼叫状态=0
11-24 20:18:43.678:E/音频硬件主(131):打开调制解调器PCM
11-24 20:18:43.952:I/ActivityManager(306):从pid 483开始{act=android.intent.action.MAIN flg=0x10840000 cmp=com.android.phone/.InCallScreen u=0}
11-24 20:18:43.998:D/dalvikvm(483):GC_并发释放981K,11%释放14039K/15687K,暂停14ms+4ms,总计61ms
11-24 20:18:44.037:D/PhoneStatusBar(387):禁用:
11-24 20:18:44.045:D/加速度计指示器(483):启用(真)
11-24 20:18:44.061:D/InCallScreen(483):onNewIntent:intent=intent{act=android.intent.action.MAIN flg=0x10c40000 cmp=com.android.phone/.InCallScreen},电话状态=OFFHOOK
11-24 20:18:44.116:W/IIInputConnectionWrapper(11614):在非活动输入连接上显示状态图标
11-24 20:18:44.514:I/ActivityManager(306):不再需要com.android.settings(pid 12419):隐藏
11-24 20:18:44.561:I/WindowsState(306):赢得死亡:窗口{41e9b4d8 com.android.settings/com.android.settings.settings暂停=false}
11-24 20:18:44.616:D/加速计指示器(483):方向:水平
11-24 20:18:47.475:D/InCallScreen(483):内部挂起()。。。电话状态=摘机
11-24 20:18:47.475:D/PhoneUtils(483):挂断():挂断前台呼叫
11-2420:18:47.475:D/PhoneUtils(483):-挂断(呼叫):常规挂断()。。。
11-24 20:18:47.811:D/CallNotifier(483):onDisconnect:cause=LOCAL,incoming=false,date=1353784723664
11-24 20:18:47.819:D/CallNotifier(483):SignalInfoTonePlayer.run(toneId=98)。。。
11-24 20:18:47.819:I/PowerManagerService(306):从现在起10000毫秒的clearUserActivity
11-24 20:18:47.827:D/CallNotifier(483):InCallTonePlayer.run(toneId=4)。。。
11-24 20:18:48.030:I/ActivityManager(306):从pid 483启动{cmp=com.android.contacts/.activities.DialtactsActivity u=0}
11-24 20:18:48.131:D/dalvikvm(306):释放1209K的所有元素的GC_,23%的自由元素20211K/26183K,暂停74ms,总计74ms
11-24 20:18:48.139:E/audio_-hw_-primary(131):处于_-CALL状态,处于_-CALL=1,模式=0
11-24 20:18:48.139:E/audio_硬件_primary(131):关闭调制解调器PCM
11-24 20:18:48.155:I/ActivityManager(306):移动任务备份:5
11-24 20:18:48.194:D/加速度计指示器(483):启用(错误)
11-24 20:18:48.194:D/PhoneStatusBar(387):禁用:
11-24 20:18:48.311:I/AudioService(306):AudioFocus放弃AudioFocus()来自AudioFocus_,用于电话、铃声和通话
11-24 20:18:48.311:V/Dialpad片段(11614):Dialpad.onResume,66:qloc,4-dtwd,3-hptc,0-tg,56-fdin,0-tm,1-hnt,1-bes,1,0
11-24 20:18:48.428:D/dalvikvm(1173):GC_并发释放383K,5%释放12177K/12807K,暂停15ms+4ms,总计45ms
11-24 20:18:48.491:I/ActivityManager(306):显示com.android.contacts/.activities.DialtactsActivity:+329ms(总计+5s6ms)
11-24 20:18:48.623:D/dalvikvm(1173):等待并发GC阻塞0毫秒
11-24 20:18:48.662:D/dalvikvm(1173):GC_显式释放185K,6%释放12063K/12807K,暂停2ms+2ms,总计39ms
11-24 20:18:49.225:D/dalvikvm(11614):等待并发GC阻塞0毫秒
11-24 20:18:49.295:D/dalvikvm(11614):GC_显式释放1248K,10%释放15160K/16775K,暂停3ms+17ms,总计65ms
11-24 20:18:49.303:I/ActivityManager(306):移动任务备份:110
11-24 20:18:49.412:W/IIInputConnectionWrapper(11614):显示非活动InputConnection上的状态图标
11-24 20:18:49.452:D/dalvikvm(306):GC_并发释放993K,20%释放21179K/26183K,暂停5ms+11ms,总计111ms

尝试将意向过滤器更改为以下内容:

<intent-filter android:priority="-1" >
                <action android:name="android.intent.action.NEW_OUTGOING_CALL" />

                <category android:name="android.intent.category.DEFAULT" />
  </intent-filter>


您的
onreceive()
是否被调用?不,我从未得到任何调试输出。如果(intent.getAction().equals(intent.ACTION\u NEW\u OUTGOING\u CALL))从Dianne hackborn处获得此通讯网,我也尝试了同样的方法。为了保持一致性,任何旨在禁止电话呼叫的接收者的优先级都应为0,以确保它将看到要拨打的最终电话号码
<intent-filter android:priority="-1" >
                <action android:name="android.intent.action.NEW_OUTGOING_CALL" />

                <category android:name="android.intent.category.DEFAULT" />
  </intent-filter>