当我的应用收到短信的时候,模拟器打出的出错log如下:
java.lang.RuntimeException: Unable to instantiate receiver com.example.smschatroom.
 MainActivity: java.lang.ClassCastException: com.example.smschatroom.
 MainActivity cannot be cast to android.content.BroadcastReceiver是否拦截短信时必须在
public class IncomingSMSReceiver extends BroadcastReceiver
{
 public void onReceive(Context _context, Intent _intent)
{
}
}如果有界面该如何处理;

解决方案 »

  1.   

    楼主你的表达略微有些混乱啊。我大概猜测你是想,在你的MainActivity里注册一个BroadcastReceiver来监听收到短信时的广播。实现方法大概就是上面这句话,在你的MainActivity里设一个BroadcastReceiver型的成员变量,在Activity onCreate()时注册监听,在onDestroy()时反注册监听,BroadcastReceiver的onReceive()方法收到广播时,干你想干的事情就好了。如果你想将BroadcastReceiver放在Manifest里注册,可以在BroadcastReceiver onReceive()收到消息时候,通过startActivity()来启动MainActivity,通过Intent传递数据。
      

  2.   

    我现在在MainActivity里设置了一个BroadcastReceiver型的变量,现在短信一来就异常退出,不知道什么原因。
      

  3.   

    MainActivity: java.lang.ClassCastException: com.example.smschatroom.
     MainActivity cannot be cast to android.content.BroadcastReceiver如果是这个类型转换错误的话,你是不是在什么地方想把MainActivity 转成BroadcastReceiver?
      

  4.   


    可以把 onReceive()部分的代码贴出来看看
      

  5.   

    我在Androidmanifest.xml 中定义了
    <receiver android:name="com.example.smschatroom.MainActivity">
    <intent-filter android:priority="800">
    <action android:name="android.provider.Telephony.SMS_RECEIVED" />
    </intent-filter>
    </receiver>
    删除该定义,就可以接收了,但是我没弄清楚是什么原因.
      

  6.   

    <receiver android:name="com.example.smschatroom.MainActivity"> 是不是这行有问题?
      

  7.   

    动态注册就不需要在 Androidmanifest.xml 中写什么了,要写的都是静态注册的。