为什么下面的代码不能输出”receive message“第一个类package com.example.broadcastreceiver_2;import android.os.Bundle;
import android.app.Activity;
import android.content.IntentFilter;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;public class MainActivity extends Activity { /** Called when the activity is first created. */
private Button registerButton = null;
private Button unregisterButton = null;
private SMSReceiver smsReceiver = null;

private static final String SMS_ACTION = "android.provider.Telephony.SMS_RECEIVED";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        registerButton = (Button)findViewById(R.id.register);
        registerButton.setOnClickListener(new RegisterReceiverListener());
        unregisterButton = (Button)findViewById(R.id.unregister);
        unregisterButton.setOnClickListener(new UnRegisterReceiverListener());
    }
    
    class RegisterReceiverListener implements OnClickListener{     public void onClick(View v) {
//生成一个BroiadcastReceiver对象
smsReceiver = new SMSReceiver();
//生成一个IntentFilter对象
IntentFilter filter = new IntentFilter();
//为IntentFilter添加一个Action
filter.addAction(SMS_ACTION);
//将BroadcastReceiver对象注册到系统当中
MainActivity.this.registerReceiver(smsReceiver, filter);
}
    
    }
    
    class UnRegisterReceiverListener implements OnClickListener{
public void onClick(View v) {
//解除BroadcastReceiver对象的注册
MainActivity.this.unregisterReceiver(smsReceiver);
}
    
    }
}
广播Broadcast类
package com.example.broadcastreceiver_2;import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;public class SMSReceiver extends BroadcastReceiver{ @Override
public void onReceive(Context arg0, Intent arg1) {
System.out.println("receiver message");
}}
布局xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" ><Button
    android:id="@+id/register"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="注册"
    />
<Button
    android:id="@+id/unregister"
    android:layout_below="@id/register"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="解除"
    /></RelativeLayout>然后再DDMS中的Emulator control中输入一下内容
Incoming number:123
选择SMS
Message:hello,android
最后点击send
这样子之后android虚拟机中可以可以接收到一条短信,但是通过程序注册的那个广播类却不能执行onReceiver()方法输出“receivermessage”请问各位大神这是为什么,哪里有问题????
急求答案啊!!!!!!!!!!

解决方案 »

  1.   

    在manifest文件里面配置是否正确。
      

  2.   

    public void onReceive(Context arg0, Intent arg1) {
    System.out.println("receiver message");你要告诉广播的发送端 你要接受的是哪个广播,
    String actionStr = arg1.getAction();
    if(actionStr.equals(SMS_ACTION))
    {
        System.out.println("receiver message");//建议使用log
    }
    [/code]