在接收短信时显示android TOAST

时间:2015-04-10 11:33:36

标签: android

我正在开发一个应用程序,它显示收到短信的东西。我希望显示短信内容或只是收到短信的通知。 我正在使用android studio。我是新手。请帮忙..

Manifest file SmsReceiver.java

3 个答案:

答案 0 :(得分:0)

注册收听新消息的接收方。 请参阅这些链接 Android - SMS Broadcast receiver 和博客:Incomming SMS Broadcast Receiver - Android Example

答案 1 :(得分:0)

使用BroadcastReceiver收听收到的短信。代码在这里:

public class SmsReciver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    Bundle bundle = intent.getExtras();
    SmsMessage msg = null;
    if (null != bundle) {
        Object[] smsObj = (Object[]) bundle.get("pdus");
        for (Object object : smsObj) {
            msg = SmsMessage.createFromPdu((byte[]) object);
        Date date = new Date(msg.getTimestampMillis());//时间
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String receiveTime = format.format(date);
            Toast.make(context, "number:" + msg.getOriginatingAddress()
            + "   body:" + msg.getDisplayMessageBody() + "  time:"
                    + msg.getTimestampMillis(), 1000).show();
        }
    }
  }
}

同时,在AndroidManifest.xml

中添加此内容
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
...
<receiver android:name="com.dbjtech.acbxt.waiqin.SmsReciver" >
    <intent-filter android:priority="999">
        <action android:name="android.provider.Telephony.SMS_RECEIVED" />
    </intent-filter>
</receiver>

答案 2 :(得分:0)

如果您的应用在Android版本上运行&gt; 3.0,您必须包含Activity,用户可以在安装后手动启动,以使应用程序退出已停止状态concept introduced in Android 3.1。系统不会向已停止的应用广播,因此您的BroadcastReceiver无法使用,直到用户明确发布应用为止。

除此之外,您的代码似乎是正确的。