我正在开展一个包含许多活动的项目,但是当尝试在类中编写广播接收器时,广播接收器无法工作,尽管我已经授予了清单文件的权限。与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>
答案 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);
}