android里如何接收短信?
如题从网上查到的接收方法基本上都是继承BroadcastReceiver,并重写onReceive方法,在AndroidManifest.xml里添加SMS_RECEIVED权限和<receiver>段落.
但我在实际验证是,发现来短信时并没有响应onReceive方法.
不知道是什么问题?是不是还有其他要注意的东西?有没有端口什么的限制?
知道的同志帮帮忙,谢谢
--------------------编程问答-------------------- 还要在AndroidManifest.xml里写上你继承BroadcastReceiver的类 --------------------编程问答-------------------- 楼上的哥们,你说的那个,我写了,在<receiver>段落里.
<receiver android:name=".C_SmsReceiver" android:enabled="true">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
C_SmsReceive就是继承BroadcastReceiver的类 --------------------编程问答-------------------- <uses-permission android:name="android.permission.RECEIVE_SMS" />
这个写了吗? --------------------编程问答-------------------- 这个权限我添加了 --------------------编程问答-------------------- @Override
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
if (extras == null)
return;
Object[] pdus = (Object[]) extras.get("pdus");
for (int i = 0; i < pdus.length; i++) {
SmsMessage message = SmsMessage.createFromPdu((byte[]) pdus[i]);
String fromAddress = message.getOriginatingAddress();
Intent intent = new Intent();
intent.setClass(context, SmsReceivedDialog.class);
context.startActivity(intent);
}
}
以上的代码,正常跳转到SmsReceivedDialog.class里,SmsReceivedDialo里有其他的显示操作。
PS: 基于2.2的SDK下。 --------------------编程问答-------------------- 应该没问题啊,你刷新代码,然后重新启动模拟器试一下 --------------------编程问答-------------------- 5楼的兄弟说的2.2里才能用?
有没有1.5,1.6能用的,毕竟现在很多的android手机还是低版本的,开发时肯定要兼顾低版本的 --------------------编程问答-------------------- 这个我觉得在模拟器上测试收短信的时候,是在DDMS中的Emulator control中设置的 --------------------编程问答-------------------- 还可以 --------------------编程问答-------------------- 我也是 试过网上无数的教程和代码片断 没有一个成功收短信的,根本没触发,研究了好几个星期,但example自带的示例能收发,但里面的示例相当复杂,代码相当多,说明网上的代码都是有缺憾的,缺没人指出来,悲剧 --------------------编程问答-------------------- 静态注册不行 试试动态注册的吧 还有 接收短信不建议用BroadcastReceiver 现在的360 qq什么的会把一些短信直接拦截 你是监听不到的。
补充:移动开发 , Android