Android java.lang.RuntimeException:无法实例化接收器

Android java.lang.RuntimeException:无法实例化接收器,android,broadcastreceiver,telephonymanager,phone-state-listener,Android,Broadcastreceiver,Telephonymanager,Phone State Listener,我正在开发一个应用程序,它可以查看用户的消息、电话簿查找和通话状态 当我接到一个电话时,我的应用程序就崩溃了 这是我的一些用户报告的错误 > java.lang.RuntimeException: Unable to instantiate receiver > me.radhakrishna.buddyreader.CustomPhoneStateListener: > java.lang.InstantiationException: can't instantiate c

我正在开发一个应用程序,它可以查看用户的消息、电话簿查找和通话状态

当我接到一个电话时,我的应用程序就崩溃了

这是我的一些用户报告的错误

> java.lang.RuntimeException: Unable to instantiate receiver
> me.radhakrishna.buddyreader.CustomPhoneStateListener:
> java.lang.InstantiationException: can't instantiate class
> me.radhakrishna.buddyreader.CustomPhoneStateListener; no empty
> constructor at
> android.app.ActivityThread.handleReceiver(ActivityThread.java:2105) at
> android.app.ActivityThread.access$1500(ActivityThread.java:123) at
> android.app.ActivityThread$H.handleMessage(ActivityThread.java:1202)
> at android.os.Handler.dispatchMessage(Handler.java:99) at
> android.os.Looper.loop(Looper.java:137) at
> android.app.ActivityThread.main(ActivityThread.java:4450) at
> java.lang.reflect.Method.invokeNative(Native Method) at
> java.lang.reflect.Method.invoke(Method.java:511) at
> com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
> at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554) at
> dalvik.system.NativeStart.main(Native Method) Caused by:
> java.lang.InstantiationException: can't instantiate class
> me.radhakrishna.buddyreader.CustomPhoneStateListener; no empty
> constructor at java.lang.Class.newInstanceImpl(Native Method) at
> java.lang.Class.newInstance(Class.java:1319) at
> android.app.ActivityThread.handleReceiver(ActivityThread.java:2100)
> ... 10 more
这是我的

CustomPhoneStateListener.java
文件

这是我的TextMessageReceiver.java

TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
telephonyManager.listen(new CustomPhoneStateListener(context), PhoneStateListener.LISTEN_CALL_STATE);
我的清单文件

<receiver android:name=".CustomPhoneStateListener">
    <intent-filter>
            <action android:name="android.intent.action.PHONE_STATE" />
    </intent-filter>
</receiver>


有人能帮我吗?提前感谢。

PhoneStateListener不是接收者,因此您无法将其放入清单中

如果手机状态发生变化,Android将发送一个Android.intent.action.PHONE_状态广播

所以你应该:

public class CustomPhoneStateReceiver extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {
        TelephonyManager telephonyManager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
        telephonyManager.listen(new CustomPhoneStateListener(context), PhoneStateListener.LISTEN_CALL_STATE);
    }
}
把那个接收人放进你的清单文件里

<receiver android:name=".CustomPhoneStateReceiver">
    <intent-filter>
            <action android:name="android.intent.action.PHONE_STATE" />
    </intent-filter>
</receiver>


您是否在menifest文件中添加了此内容?是的,我在上面看到了我的声明,您可以详细说明吗?我不明白你在说什么。你把CustomPhoneStateListener放在清单中,它不是接收者。这里CustomPhoneStateListener.java扩展PhoneStateListener我如何扩展BroadcastReceiver?我的示例代码使用CustomPhoneStateReceiver扩展了BroadcastReceiver,它已经是另一个java文件了。在该文件中,使用您的侦听器。我说清楚了吗?
<receiver android:name=".CustomPhoneStateReceiver">
    <intent-filter>
            <action android:name="android.intent.action.PHONE_STATE" />
    </intent-filter>
</receiver>