我有一个类,其代码如下:

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函数没有记录任何内容?

我怎样才能解决这个问题?任何帮助,将不胜感激,谢谢。

最佳答案

您的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

关于java - Android的OnReceive通话不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23042450/

10-11 21:44