BroadcastReceiver的onReceive不执行
来源:互联网 发布:淘宝网红鞋店 编辑:程序博客网 时间:2024/06/06 04:52
package net.zx;
import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class ReceiverActivity extends Activity {
private Button bind_receiver;
private Button unbind_receiver;
private SMSReceiver smsReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.receiver_main);
bind_receiver = (Button) findViewById(R.id.bind_receiver);
bind_receiver.setOnClickListener(new BindButtonListener());
unbind_receiver = (Button) findViewById(R.id.unbind_receiver);
unbind_receiver.setOnClickListener(new UnbindButtonListener());
}
class UnbindButtonListener implements OnClickListener {
@Override
public void onClick(View v) {
ReceiverActivity.this.unregisterReceiver(smsReceiver);
}
}
class BindButtonListener implements OnClickListener {
@Override
public void onClick(View v) {
smsReceiver = new SMSReceiver();
Intent intent = new Intent();
intent.setAction("android.provider.Telephony.SMS_RECEIVED");
//监听短信
IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
ReceiverActivity.this.registerReceiver(smsReceiver, filter);
//ReceiverActivity.this.sendBroadcast(intent);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.receiver, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
package net.zx;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.widget.Toast;
public class SMSReceiver extends BroadcastReceiver{
public SMSReceiver(){
System.out.println("已执行。。。。");
}
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
System.out.println("receiver message");
Bundle bundle = intent.getExtras();
Object[] object = (Object[])bundle.get("pdus");
SmsMessage sms[]=new SmsMessage[object.length];
for(int i=0;i<object.length;i++)
{
sms[0] = SmsMessage.createFromPdu((byte[])object[i]);
Toast.makeText(context, "来自"+sms[i].getDisplayOriginatingAddress()+" 的消息是:"+sms[i].getDisplayMessageBody(), Toast.LENGTH_SHORT).show();
}
//终止广播,在这里我们可以稍微处理,根据用户输入的号码可以实现短信防火墙。
// abortBroadcast();
}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.zx"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="21" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".ReceiverActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!--
<receiver android:name=".SMSReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
-->
</application>
<!-- 权限申请 -->
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
</manifest>
0 0
- BroadcastReceiver的onReceive不执行
- android BroadcastReceiver 广播 onReceive()执行多次
- 在BroadCastReceiver的onReceive方法中执行耗时操作的正确姿势
- 在BroadCastReceiver的onReceive方法中执行耗时操作的正确姿势到底是什么
- BroadcastReceiver的OnReceive函数中启动对话框
- android 从broadcastReceiver的onReceive方法中启动activity
- BroadcastReceiver类onReceive方法说明..
- Broadcastreceiver onreceive函数重复调用
- BroadcastReceiver onReceive()没有被调用
- 关于Android的BroadcastReceiver的onReceive方法中回调结果给Activity的问题
- android broadcast 的onreceive
- 一条广播onReceive方法多次执行
- 无序广播的BroadcastReceiver的执行顺序
- BroadcastReceiver广播接收者(五)——onReceive()中的耗时任务以及短信窃听
- BroadcastReceiver广播接收者(四)——本地广播LocalBroadcastManager以及在onReceive()中弹出Dialog
- BroadcastReceiver 中的onReceiver()方法执行多次的完美结局方案
- Broadcast的onReceive是在UI线程里面调用吗?
- 【Android常用】Broadcast的onReceive方法中弹出AlertDialog
- PhoneGap(Cordova)
- 成员变量设值
- H标签
- eclipse开发中常见问题
- 在ADB中ping可用,但在程序里调用ping总是报错“permission denied”
- BroadcastReceiver的onReceive不执行
- TabLayout和ViewPager实现滑动片段
- SearchView 点击无法提交搜索
- C++头文件用<>还是“” 以及 要加.h还是不加 的问题
- 如何让APP获知有应用在请求Camera硬件资源?
- eclipse启动tomcat 访问http://localhost:8080 报404错误
- MySQL 5.7 在 windows 安装方法
- 求个让注册机无法破解的验证码
- 单片机课设——电子时钟(有源码与仿真图)