接收到的Android短信接收器不工作
我已经创建了一个动态短信接收接收器,但它不工作需要你的帮助。。。 我在一部手机的24685端口上发送短信,在另一部手机上运行下面提到的代码,但不知道为什么我在该端口上没有收到任何短信。。 为您提供信息,我在我的第一部手机上收到了发送报告,但我的接收器无法检测到该消息接收到的Android短信接收器不工作,android,sms,broadcastreceiver,Android,Sms,Broadcastreceiver,我已经创建了一个动态短信接收接收器,但它不工作需要你的帮助。。。 我在一部手机的24685端口上发送短信,在另一部手机上运行下面提到的代码,但不知道为什么我在该端口上没有收到任何短信。。 为您提供信息,我在我的第一部手机上收到了发送报告,但我的接收器无法检测到该消息 public class TestingSMSReceiverActivity extends Activity { private Context context; private MessageReceivedReceiver
public class TestingSMSReceiverActivity extends Activity {
private Context context;
private MessageReceivedReceiver messageReceivedReceiver;
private String port="24685";
private short sendPort= 24685;
private TextView tv;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv=(TextView) findViewById(R.id.tv);
context=getApplicationContext();
openReceiver();
}
public class MessageReceivedReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context arg0, Intent arg1) {
showLog("MessageReceivedReceiver Message Received");
Toast.makeText(context, "SMS Received", Toast.LENGTH_SHORT).show();
try
{
switch (getResultCode()) {
case Activity.RESULT_OK:
Bundle bundle = arg1.getExtras();
SmsMessage[] msgs = null;
if (bundle != null)
{
//---retrieve the SMS message received---
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
for (int i=0; i<msgs.length; i++)
{
msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
byte[] data = msgs[i].getUserData();
String receivedTextMessage=new String(data);
Toast.makeText(context, ""+msgs.length+" "+receivedTextMessage, Toast.LENGTH_SHORT).show();
processReceivedSMS(receivedTextMessage);
}
}
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
showLog("RESULT_ERROR_GENERIC_FAILURE");
break;
case SmsManager.RESULT_ERROR_NO_SERVICE:
showLog("RESULT_ERROR_NO_SERVICE");
break;
}
}
catch(Exception e)
{
Toast.makeText(context, e.toString(), Toast.LENGTH_SHORT).show();
}
}
}// end of public class messageReceivedReceiver
private void openReceiver()
{
try
{
showLog("Open Receiver");
IntentFilter filter = new IntentFilter();
filter.addDataScheme("sms");//Try commenting the same for text msg
filter.addDataAuthority("localhost", port);
filter.addAction("android.intent.action.DATA_SMS_RECEIVED");//Binary Msg
if(messageReceivedReceiver==null){
messageReceivedReceiver=new MessageReceivedReceiver();
showLog("new MessageReceivedReceiver instance created");
}
context.registerReceiver(messageReceivedReceiver,
filter);
}
catch(Exception e)
{
showLog("openReceiver "+e.toString());
}
}
private void showLog(String string) {
// TODO Auto-generated method stub
Log.d("SMSReceiver", string);
}
private void processReceivedSMS(String receivedTextMessage)
{
unregisterReceivers();
showLog("SMS receivedTextMessage= "+receivedTextMessage);
try
{
tv.append(receivedTextMessage);
showLog("Received Message "+receivedTextMessage);
}
catch(Exception e)
{
showLog("processReceivedSMS "+e.toString());
}
}//end of processReceivedSMS
private void unregisterReceivers() {
try {
if(messageReceivedReceiver!=null){
context.unregisterReceiver(messageReceivedReceiver);
showLog("Unregister Received Receiver");
}
} catch (Exception e) {
showLog("unregisterReceivers "+e.toString());
}
}
公共类测试SMSReceiverActivity扩展活动{
私人语境;
私人消息接收者消息接收者消息接收者;
专用字符串端口=“24685”;
专用短发送端口=24685;
私家图文电视;
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv=(TextView)findviewbyd(R.id.tv);
context=getApplicationContext();
openReceiver();
}
公共类MessageReceivedReceiver扩展了BroadcastReceiver{
@凌驾
公共void onReceive(上下文arg0,意图arg1){
显示日志(“MessageReceivedReceiver Message Received”);
Toast.makeText(上下文,“收到短信”,Toast.LENGTH_SHORT).show();
尝试
{
开关(getResultCode()){
案例活动。结果\u正常:
Bundle Bundle=arg1.getExtras();
SmsMessage[]msgs=null;
if(bundle!=null)
{
//---检索收到的SMS消息---
Object[]pdus=(Object[])bundle.get(“pdus”);
msgs=新SMS消息[PDU.length];
对于(int i=0;i请尝试以下两个问题的答案:
您是否在logcat中收到“消息已接收”日志?不,我没有收到任何“消息已接收”message…实际上MessageReceivedReceiver的onReceive方法没有执行…您已经在项目android清单文件中提到了您的广播接收器类?没有,但是它是必需的,因为我已经创建了嵌套的广播接收器类,并且我正在动态注册我的接收器…但是将按照您所说的那样尝试…@Dinesh我需要注册receiver动态..但我按照你说的做了,但也没有起作用..你能给我一些建议吗..谢谢你的努力,但是声明我的接收者类而非主要活动类也没有起作用..我认为主机名中有一些问题..非常感谢你的帮助..我这边有个错误..没有给予许可对于接收短信,我已经允许阅读短信…愚蠢的错误:我在做类似的事情!!!