4

我想实现一个简单的广播接收器,当有来电时它会被触发。但是,似乎永远不会触发 onReceive(我非常仔细地检查了 LogCat,那里没有输出),出了什么问题?我的课:

public class MyPhoneReceiver extends BroadcastReceiver {
    private static final String TAG = "DEBUG";

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.e(TAG, "Test loggiiiiiiiiiiiiiiiiiiiiiiiiing!");

    }

}

我的清单文件:

<?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="tung.le.android.receiver.phone"
    android:versionCode="1"
    android:versionName="1.0" >


    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
         <receiver android:name=".MyPhoneReceiver" >
            <intent-filter>
                <action android:name="android.intent.action.PHONE_STATE" >
                </action>

            </intent-filter>
        </receiver>

    </application>
    <uses-sdk android:minSdkVersion="15" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" >
    </uses-permission>

</manifest>
4

4 回答 4

2

您可能需要将android:enabled="true"添加到清单中的标签,或者您必须在某处注册它(例如自定义“YourApplication”类)。

于 2013-02-04T10:28:14.170 回答
1

我在使用此 BroadcastReceiver 解决方案时遇到的问题是,它无法触发活动通话期间发生的任何通话。当我与一个人在电话上交谈并且有人在另一条线上给我打电话时(我接受了第二个电话),实际上没有任何状态发生变化。电话之前是摘机的,当我接听第二个电话时它仍然处于摘机状态。

到目前为止,我发现的唯一解决方案是为 android.provider.Calls 注册一个观察者,然后在每次数据更改后从中获取最新条目。如果有人知道更好的解决方案,请告诉我。

于 2014-03-23T11:37:21.310 回答
0

您是否在代码中注册您的接收器??如果没有,您将不得不在 manifest.xml 中注册您的接收器。

于 2012-06-28T11:08:18.347 回答
0

您的项目中至少应该有一项活动。即使您在应用程序启动后立即完成它。它不需要做任何事情,但它应该在安装后至少启动一次。

于 2015-01-16T20:22:50.550 回答