我是android的新手。我试图在主类中注册Broadcastreceiver来接收sms.But当我运行logcat时显示“接收广播意图中的错误”并且应用程序变为强制关闭。这是什么解决方案? 这是我的代码:
public class Yes extends Activity {
/** Called when the activity is first created. */
private Retrieve receiver = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button start=(Button)findViewById(R.id.bt1);
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
receiver = new Retrieve();
registerReceiver(receiver,new
IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
}
});
}
private class Retrieve extends BroadcastReceiver
{
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
Object messages[] = (Object[]) bundle.get("pdus");
SmsMessage smsMessage[] = new SmsMessage[messages.length];
for (int n = 0; n<messages.length; n++) {
smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]);
smsMessage[0].getMessageBody();
}
// show first message
Toast toast = Toast.makeText(context,
"Received SMS: " + smsMessage[0].getMessageBody(), Toast.LENGTH_LONG);
toast.show();
}}
我放了一个开始按钮,我试图在该按钮内设置接收器。我在清单文件中提供权限以接收sms.i没有在manifest中写入意图过滤器。我认为我注册接收器的方式是完全错误的我想做。帮助我...
答案 0 :(得分:0)
在您的外部活动中,创建广播(或将其作为单独的类写入):
private BroadcastReceiver smsReceiver = new BroadcastReceiver(){
public void onReceive(Context context, Intent intent) {
//do your task
}
}
在onClick上只注册接收器:
registerReceiver(smsReceiver, filter);