安卓开发关于通过广播获取信息的问题

申请权限

            <!--短信广播监听器-->
    <receiver android:name=".Broadcast">
        <intent-filter android:priority="999">
            <action android:name="android.provider.Telephony.SMS_RECEIVED" />
        </intent-filter>
    </receiver>

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Message;
import android.telephony.SmsMessage;
import android.widget.Toast;

public class Broadcast extends BroadcastReceiver {
private static final String ACTION="android.provider.Telephony.SMS_RECEIVED";
private Message message=new Message();
private Bundle bundle=new Bundle();
@Override
public void onReceive(Context context, Intent intent){
Toast.makeText(context, "来短信啦",Toast.LENGTH_SHORT).show();
if(ACTION.equals(intent.getAction())){
SmsMessage[] smsMessage=getMessageFromIntent(intent);
StringBuilder str=new StringBuilder();
if(smsMessage!=null&&smsMessage.length>0){
for(SmsMessage smg:smsMessage){
str.append(smg.getDisplayOriginatingAddress()+":\n ");
str.append(smg.getDisplayMessageBody()+"\n");
}
}
Toast.makeText(context, str.toString(),Toast.LENGTH_SHORT).show();
}
}
public static SmsMessage[] getMessageFromIntent(Intent intent){
SmsMessage[] smsMessage=null;
Bundle bundle=intent.getExtras();
Object[] puds=(Object[])bundle.get("puds");
smsMessage=new SmsMessage[puds.length];
for(int i=0;i<puds.length;i++){
byte[] data=((byte[])puds[i]);
smsMessage[i]=SmsMessage.createFromPdu(data);
}
return smsMessage;
}
}

请问哪里错了就是监听不了短信,有人发短信来没app没反应

不好意思我小白一个没有C币,求助

3个回答

如果代码没错应该是手机的问题了,有些手机厂商为了用户数据的安全,做系统的时候会把某些源码改掉的。比如我的小米的有很多功能被限制了,太tm恶心了。

是不是AndroidManifest里面没有加这个权限

figurers
Grooter 加了 <uses-permission android:name="android.permission.RECEIVE_SMS"/>
大约 2 年之前 回复

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
安卓开发中通过广播监听网络状态的代码实现
  一般我们打开无线有时候会主动连接上一些没有密匙的无线网络,但是这时候手机上的应用程序仍然显示的是没有有效的数据连接,那么除了用浏览器打开检测之外,其实还有一种比较有效的办法,那就是通过广播监听网络状态,下面跟大家分享一下实现代码:权限&amp;lt;uses-permission android:name=&quot;android.permission.INTERNET&quot;/&amp;gt; &amp;lt;!--允许读取网络...
安卓开发广播接收不到的问题
通常我们知道,发送普通广播Intent对象都是只能带一个Action的,但是广播接收器却可以把很多Action添加到IntentFilter中去过滤自己需要接收到的广播,但是有一个小细节需要注意:有些广播是必须添加USBfilter.addDataScheme(&quot;file&quot;)的,比如说是SD卡插拔卸载广播,这样的广播接收器不能掺杂普通广播的Action,也不是说不能掺杂,如果掺杂了,那么普通广播就...
安卓开发3——广播应用
目录 一、实验内容 二、实验过程 三、代码 一、实验内容 1、静态注册一个广播接收器,在开机时用Toast提示“开机成功”,IntentFilter为:       android.intent.action. BOOT_COMPLETED 2、自定义广播:       (1) 发送一个自定义广播,在intent中附加数据(putExtra方法),key为”extraKey”,v...
安卓开发之广播的使用(Broadcast)
广播接收机制是安卓开发的四大机制之一,广播是广泛运用在应用程序之间的用于传送消息的机制,它可以方便的实现系统中不同组件之间的通信,本文主要介绍广播的发送以及接收的实现。 广播(Broadcast) -用于发送广播 广播接收器(BroadcastReceiver) - 用于接收广播 广播分两种:同步广播(同时接受信息),有序广播(根据设定的优先级,接收广播消息有个先后)
安卓开发之动态注册网络监听广播
第一步创建一个IntentFilter类的对象,在这个对象中使用addAction方法,将要 监听的广播添加进去。第二步新建一个类,使这个类继承BroadcastReceiver类,并重写父类的onReceive()方法,当接收到监听广播时,做出的动作。第三步创建第二步中类的对象。使用registerReceiver()方法,把第一步和第二步的对象传入该方法参数,这样就注册好了一个可以接收特定广播
安卓开发 四大组件之广播
广播,是一个全局的监听器,属于Android四大组件之一广播的分类:标准广播:一种完全异步执行的广播,再广播发出之后,所有的广播接收器机会都会在同一时刻接收到这条广播消息。因此没有任何先后顺序可言。这种广播的效率会比较高,但是同时也意味着他是无法被截断的。标准广播的工作流程有序广播:一种同步执行的广播,当广播发出后,同一时刻只会有一个广播接收器能收到这条广播,当广播接收器的逻辑执行完后,广播才会继...
在服务中通知Activity来获取信息(通过广播)
#1.在onPrepared()中创建意图并发送广播。 public static final String OPEN_AUDIO = &quot;notify_activity_to_get&quot;; class MyOnPreparedListener implements MediaPlayer.OnPreparedListener { @Override pu...
通过intent.getExtras()获取信息失败
主要代码:rnactivity 1 :rn search.setOnClickListener(new View.OnClickListener() //search button clickrn rn @Overridern public void onClick(View v) rn // TODO Auto-generated method stubrn Intent intent = new Intent (TsearchActivity.this, resultActivity.class);rn //add intent content...rn intent.putExtra("keyword", text.getText());rn intent.putExtra("name", name.getText());rn intent.putExtra("pwd", pwd.getText());rn //intent.setType("text/plain");rn startActivity(intent);rn rn );rnrnrnavtivity 2: rn Bundle extras = getIntent().getExtras();rn if (extras != null) rn keyword = extras.getString("keyword");rn //text.setText(keyword);rn rn key.setText(keyword); //key是一个edittextrnrn执行后发现key的内容还是空的,求解啊
通过触发事件获取信息
 $("#ddlSite").change(function () {             var SiteCode = $(this).val();             var ajax_Site = EShopfloorAjaxService.Des_GetDataFromTable("vw_PHS_Site", "DFV_ROWID", -1, "DFV_ROWID, Si
通过HttpServletRequest对象获取信息
HttpServletRequest所包含信息
关于PHP 获取信息问题
[code=php](.*)", $site,$count);rnprint_r($count); //获取好主题在百度中的收录数量rnrn?>[/code]rn这个能获得结果:Array ( [0] => [1] => 百度搜索_site:hao123.com )rn但是:[code=php](.*)", $site,$count);rnprint_r($count); //获取好主题在百度中的收录数量rnrn?>[/code]rn这个就不行了。。。rn求解释,还有怎么获得百度收录量。。。。
通过身份证获取信息
c#里面如何通过身份证号码获取生日、性别、籍贯呢
易语言通过句柄获取信息
易语言通过句柄获取信息,可以获取到标题,等各种信息。
安卓开发广播最简单强制下线
小菜鸟,不喜勿喷。 部分代码 package com.example.test619qiangzhixiaxian.test619qiangzhixiaxian; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import
通过Java反射动态获取信息
public static  Car getCarInfo() throws Throwable{        ClassLoader loader = Thread.currentThread().getContextClassLoader();        Class clazz = loader.loadClass(&quot;test.Car&quot;);                Construc...
关于安卓开发页面布局问题
我是新手,问得问题可能有点白痴,尽情见谅。我想要问得是对于有一个高和宽的属性都是match_parent的RecyclerView在上面,但是下面我还要加一个输入框。类似微信的聊天界面,我想问这个下面的输入框的布局应该怎样布置才能显示。网上找了一些界面布局。。。但是。。。n求大神解答!万分感激!
求助!!!关于安卓开发的问题
最近初次参加了一个项目,其他成员的机子是64位的,我的是32位的。然后今天从svn上得到他们写的项目,其他人的机子上都能跑,放到我的机子上一跑程序就无法运行,想问问这是不是跟我的机子是32位的有关
一条关于安卓开发的问题
我创建了两个Fragment,在MainAcitivity里分别用两个按钮去启动它们,代码如下:npublic class MainActivity extends Activity nn @Overriden protected void onCreate(Bundle savedInstanceState) n super.onCreate(savedInstanceState);n setContentView(R.layout.activity_main);n n Button btn=(Button)findViewById(R.id.btn1);n Button button=(Button)findViewById(R.id.btn2);n btn.setOnClickListener(new OnClickListener()n n @Overriden public void onClick(View v)n n FragmentManager fm=getFragmentManager();n n Fragment fragment=fm.findFragmentById(R.id.linear1);n if(fragment==null)n n fragment=new frag();n fm.beginTransaction()n .add(R.id.linear1,fragment)n .commit();n n n );n button.setOnClickListener(new OnClickListener()n n @Overriden public void onClick(View v)n n FragmentManager fm=getFragmentManager();n n Fragment fragment=fm.findFragmentById(R.id.linear1);n if(fragment==null)n n fragment=new frag2();n fm.beginTransaction()n .replace(R.id.linear1,fragment)n .commit();n n n );n n n 但是我在运行的时候发现按了按钮btn后显示了第一个Fragment,但是再按按钮button是就没有任何反应了,第二个Fragment没有显示出来,请问这是怎么回事?要实现Fragment的替换,我应该如何去做?
关于propertygrid获取信息
这几天在做一个东西,要求是用propertygrid获取datagridview中的数据(也可以是数据库中的,只不过我已经用datagridview显示出来了),求教各位大神有没有什么好的方法,我是一点思路也没有啊rndatagridview如图rn[img=https://img-bbs.csdn.net/upload/201807/24/1532441862_381595.png][/img]rn要求就是将datagridview中选中的某一行数据中的信息在propertygrid中实时显示rn[img=https://img-bbs.csdn.net/upload/201807/24/1532441896_54928.png][/img]rn
关于从select获取信息
从select框获取的值究竟是什么rnrnLocationrnBeijingrnShanghairnGuangzhournrnrn是Beijing/Shanghai/Guangzhou还是1/2/3 ??
安卓开发之通过网址获取数据
//获取服务器数据 public void ss(final String cn) { TimerTask task = new TimerTask() { public void run() { HttpURLConnection co = null; try {
关于动态注册广播的问题
想实现动态监听广播,直接贴代码。。。在主activity中rnrnIntent intent = new Intent();rnrnintent.setAction("cn.abel.action.broadcast");rnrnintent.putExtra("author", "Abel"); // 要发送的内容rnrnMainActivity.this.sendBroadcast(intent);// 发送 一个无序广播rn想在另外一个activity动态注册广播实现监听:rnrnIntentFilter intentFilter = new IntentFilter();rnrnintentFilter.addAction("cn.abel.action.broadcast");rnrnLog.e("eee", "aaa");rnrnthis.registerReceiver(new MyBroadcastReciver(), intentFilter);rnrn在通过MyBroadcastReciver()继承BroadcastReceiver类,但在onReceive中怎么都收不到信息,还是根本没监听到。rn求解释啊!!!!!!!!!!!!!!
关于UDP广播问题
我的linux上有2块网卡:rn网卡1:eth0 192.168.1.23rngateway:192.168.1.1rn网卡2:wlan0 192.168.2.23rn没有设gatewayrnrnping 192.168.1.1能ping的通rnping 192.168.2.1能ping的通rnrnudp广播分两种:rn1.直接广播rn2.受限广播:即发送255.255.255.255rnrn那么当我发送受限广播(255.255.255.255)时,为什么1网段有回应,而2网段没回应,这是为什么?rn当我发送直接广播192.168.1.255时,1网段有回应,当我发送直接广播192.168.2.255时,而2网段没回应,为什么?rnrn
关于广播的问题。。。
主要问下广播在代码中的动态注册。rn1.广播在代码中动态注册,是不是每次退出程序的时候,必须用代码注销掉?rn2.广播在代码中重复动态注册,需要多次注销才能注销完吗?
关于视频广播的问题
在一个局域网环境内,服务器上播放VCD视频文件或RMVB文件或MPG文件或其它的视频文件,然后向客户端发送,让客户端能够尽可能地实时观察到实时播放的影像???设计这样的一个程序,除了网络架构之外,我想问的是如何对视频文件进行编码??????也就是说,pplive或ppstream的实现原理.rnrn
关于网站广播问题
看到一个网站有在线广播的是怎么做的??
关于组播,和广播的问题!
如果我的程序是运作在Windows下面,我如何得到我的组播地址(如何计算)?下面的客户机如何向组播地址注册自己的ip?如何注销自己的IP?rn广播的时候计算广播地址需要知道该子网的子网掩码?如何得到该子网的子网掩码(通过函数,非人工手动获得)?
关于Socket的广播问题:
前提:三个客户端A、B、C和一个服务器(用socket tcp协议实现)rn要求:A B C 分别向服务器发消息,然后服务器以广播的形式把A发的消息再发送给A B C ;把B发的消息发送给A 、B、 C,把C发的消息发送给A、B、C ,用C#程序怎么实现啊??rn目的:为了模拟游戏中,玩家的坐标位置,实时更新玩家(B、C)的坐标,因此必须实现客户端和服务器的实时更新,以及服务器把客户端的位置发送给其他的玩家,只有这样其他的玩家才知道玩家(A)的地理位置rn
关于UDP广播的问题
rn 我的接收端是这样的,,但是为什么总是接受不到信息呢?rnrnrn#include rn#include rnrn#define MCASTADDR "234.5.5.5" //本例使用的多播组地址。rn#define MCASTPORT 5150 //绑定的本地端口号。rn#define BUFSIZE 1024 //接收数据缓冲大小。rnrnint main(int argc, char* argv[])rnrn WSADATA wsd;rn struct sockaddr_in local,remote,from;rn SOCKET sock,sockM;rn char recvbuf[BUFSIZE];rnrn int len = sizeof( struct sockaddr_in);rn int ret;rnrn if(WSAStartup( MAKEWORD(2,2),&wsd)!= 0 )rn rn printf("WSAStartup() failed\n");rn return -1;rn rnrn sock=WSASocket(AF_INET,SOCK_DGRAM,0,NULL,0,WSA_FLAG_MULTIPOINT_C_LEAF|WSA_FLAG_MULTIPOINT_D_LEAF);rn if(sock== INVALID_SOCKET)rn rn printf("socket failed with:%d\n",WSAGetLastError());rn WSACleanup();rn return -1;rn rnrn //将sock绑定到本机某端口上。rnrn local.sin_family = AF_INET;rn local.sin_port = htons(MCASTPORT);rn local.sin_addr.s_addr = INADDR_ANY;rn if(bind(sock,(struct sockaddr*)&local,sizeof(local)) == SOCKET_ERROR )rn rn printf( "bind failed with:%d \n",WSAGetLastError());rn closesocket(sock);rn WSACleanup();rn return -1;rn rnrn //加入多播组rn remote.sin_family = AF_INET;rn remote.sin_port = htons(MCASTPORT);rn remote.sin_addr.s_addr = inet_addr( MCASTADDR );rnrn if((sockM = WSAJoinLeaf(sock,(SOCKADDR*)&remote,sizeof(remote),NULL,NULL,NULL,NULL, JL_BOTH)) == INVALID_SOCKET)rn rn printf("WSAJoinLeaf() failed:%d\n",WSAGetLastError());rn closesocket(sock);rn WSACleanup();rn return -1;rn rnrn //接收多播数据,当接收到的数据为"QUIT"时退出。rn while(1)rn rn if((ret = recvfrom(sock,recvbuf,BUFSIZE,0,(struct sockaddr*)&from,&len)) == SOCKET_ERROR)rn rn printf("recvfrom failed with:%d\n",WSAGetLastError());rn closesocket(sockM);rn closesocket(sock);rn WSACleanup();rn return -1;rn rn if(strcmp(recvbuf,"QUIT") == 0 ) break;rn elsern rn recvbuf[ret] = '\0';rn printf("RECV:' %s ' FROM <%s> \n",recvbuf,inet_ntoa(from.sin_addr));rn rn rn closesocket(sockM);rn closesocket(sock);rn WSACleanup();rn return 0;rnrn
关于事件的广播问题
///////////B页广播件 rn public function myfun():voidrn rn var up:uploadWindow = new uploadWindow();rn up.imgpath1 = this.jobimg.source.toString();rn this.dispatchEvent(new Event("mytest")); rn rnB里面是不是这样来广播事件rnrnmytest是A里面的事件,imgpath1 是A页面的全局变量rnrnrn/////////////////A页面侦听事件rnpublic var imgpath1:String = ""; ////全局变量rnprivate function mytest():voidrnrn var pr:productimg = new productimg();rn pr.addEventListener("mytest", myshowAlert);rnrn private function myshowAlert(ec:Event):voidrn rn var pro:productimg = productimg(ec.currentTarget);rn imgpath1=pro.imgpath1;rn Alert.show(pro.imgpath1); rn rnrnrnproductimg :B页面的名,A怎么接收不到imgpath1的值啊?
关于udp广播的问题
如果客户机向指定的机器(服务器)发送数据报,服务器可以接收的到,但如果向rnX.X.X.255(服务器所在子网)进行发送,服务器就接收不到。如果广播地址改为rnINADDR_BROADCAST(255.255.255.255),发送端就会报错,错误号10013(以一种访问权限不允许的方式做了一个访问套接字的尝试),什么原因?
关于QQ广播的问题?
能广播,那为什么不能屏蔽呢,做个程序屏蔽腾讯的广播吧。
还是关于广播的问题
广播时本机会收到自己发的信息,如何屏蔽?或者能与其他机器发来的信息区分开也行。其他机器不使用广播机制,用一对一UDP传输。
关于注册广播的问题
遇到一个面试题,广播不是有两种注册方法,有啥区别
关于多址广播的问题
现有一应用程序,需要在启动时向网络进行广播以通知其他机器上的同一应用程序,请问我该如何实现广播,如何时向跨路由器广播?我没有做过网络方面的东西,所以希望大家能够详细的帮我解释一下,非常感谢!
关于广播、组播问题?
遇到一个问题,设备接在局域网路由器上,想给局域网内所有计算机发消息,请问用广播好还是组播好。网上看了一些两者区别的资料,感觉还是不甚了了。请大伙帮忙扫盲下。另外能否告知用什么组件来实现?
关于intent广播的问题?
最近看书时发现了一段话,大约是这个意思:一个应用只要设定了intent广播接收器,那么就算这个应用不是活动,未运行的的也可以做出响应。rn这是什么意思?如果一个应用有某个广播接受器,那么是不是这个程序就算是用户未打开也会做出响应?如果是这样的话,它是怎么实现的?如果不是,那么这句话如何理解?rn谢谢!
关于postmessage()广播问题?
由于在大模块测试出现问题。后用一个简单对话框测试,问题如下:CE下 一简单对话框,只有两个按钮,其 中button1 按钮发送消息,PostMessage( HWND_BROADCAST, WM_KEYUP, 37, 0 );就是广播一个按键消息,另外在PreTranslateMessage( ) 函数里面处理 WM_KEYUP;rn if( pMsg->message == WM_KEYUP ) // pMsg后面参数大概这样,记不太清,程序里没问题。rnrn TRACE( _T("WM_KEYUP") );rnrn如果只按下 button1,多次按下,在调试窗口都正确输出,一次发送消息,一次TRACE()输出。rn如果按下button2 ,然后,再返回到button1,则变成 一次发送消息,两次TRACE()输出。rnrn帮忙。怎么解决?
安卓开发最简单收发短信(广播)
小菜鸟一枚,希望各位大神提出意见,谢谢! 代码地址:http://pan.baidu.com/s/1dEPZ5ZV
关于安卓开发。。。。。。。。。。。。。。。
android里为什么在res下新建anim的动画文件。为什么在R文件中没有生成,就调用不了![图片说明](https://img-ask.csdn.net/upload/201506/21/1434852416_375825.png)
相关热词 c#检测非法字符 c#双屏截图 c#中怎么关闭线程 c# 显示服务器上的图片 api嵌入窗口 c# c# 控制网页 c# encrypt c#微信网页版登录 c# login 居中 c# 考试软件