我有一个代码如下的类:
public class CallManager extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
tManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
Log.i("onReceive","here");
}
}
清单上的权限:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.PROCESS_INCOMING_CALLS" />
<uses-permission android:name="android.permission.BOOT_COMPLETED" />
接收方意图过滤器:
<receiver android:name="com.ram.tapdetector.CallManager">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
由于某种原因,没有从onReceive函数中记录任何内容?
我该如何解决这个问题?任何帮助将不胜感激,谢谢。
答案 0 :(得分:1)
您必须添加权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
而不是
<uses-permission android:name="android.permission.BOOT_COMPLETED" />
代表BOOT_COMPLETED
。查看文档here。
据我所知,其他一切都应该没问题。
p.s。:如果您想接收来电的广播事件,请使用权限
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
并使用
声明您的意图过滤器<receiver
android:name="com.ram.tapdetector.CallManager"
android:enabled="true">
<intent-filter
android:priority="1000">
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
检查这个好tutorial以获取更多信息。
答案 1 :(得分:1)
您的AndroidManifest.xml文件中需要以下内容:
1)在你的元素中:
`<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />`
2)在你的元素中(确保为BroadcastReceiver使用完全限定的[或相对]类名称):
<receiver android:name="com.example.CallManager">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
` 在MyBroadcastReceiver.java中:
` package com.example;
public class CallManager extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
tManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
Log.i("onReceive","here");
}
}`
如果您使用的是HTC mobile -
与
一起`<action android:name="android.intent.action.BOOT_COMPLETED" /> `
也用,
`<action android:name="android.intent.action.QUICKBOOT_POWERON" />`
HTC设备似乎没有抓住BOOT_COMPLETED
答案 2 :(得分:0)
你试过旗帜吗?
android:enabled="true"
android:exported="true"