使用广播接收器和活动

时间:2011-12-29 07:33:45

标签: android

我正在开展一个包含许多活动的项目,但是当尝试在类中编写广播接收器时,广播接收器无法工作,尽管我已经授予了清单文件的权限。与reciver。

<receiver android:name=".IncomingCallReciever" android:exported="true" android:enabled="true">
    <intent-filter android:priority="1">actionandroid:name="android.intent.action.NEW_OUTGOING_CALL" />
        <action android:name="android.intent.action.PHONE_STATE" />
        <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter>
</receiver>

2 个答案:

答案 0 :(得分:2)

我发布的XML摘录看不出任何错误。但是,标记android:name中可能存在错误。这应该是完全限定的类名(例如com.example.project.ReportReceiver)。但是,作为简写,如果名称的第一个字符是句点(例如,.ReportReceiver),则会将其附加到<manifest>元素中指定的包名称。使用该快捷方式,您的包名称应为package="com.example.project"。在您的情况下,您应该在.IncomingCallReciever之前检查整个包名称。


修改

特别检查问题:

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

>之后移除android:priority="1" - 这是一个语法问题,一旦你纠正它就应该有效。

答案 1 :(得分:0)

public void onReceive(Context context, Intent intent) {
mContext = context;
mIntent = intent;
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
int events = PhoneStateListener.LISTEN_CALL_STATE;
tm.listen(phoneStateListener, events);
}