zoukankan      html  css  js  c++  java
  • 短信SMS的接收

    近日,看了《第一行代码》有关短信接收的内容,就总结了一下。

    1.手机接收到一条短信时,系统会发出一条android.provider.Telephy.SMS_RECEIVER的广播,这条广播带有短信的所有数据

    2.首先定义xml文件

    <LinearLayout 
            android:layout_width="match_parent"
            android:layout_height="50dp">
            
            <TextView 
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:padding="10dp"
                android:text="From:"/>
            
            <TextView 
                android:id="@+id/sender"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"/>
            </LinearLayout>
            
             <LinearLayout 
            android:layout_width="match_parent"
            android:layout_height="50dp">
            
            <TextView 
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:padding="10dp"
                android:text="Content:"/>
            <TextView 
                android:id="@+id/content"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"/>

    2.MainActivity

    public class MainActivity extends ActionBarActivity {
        
        private TextView sender;
        
        private TextView content;
        
        private IntentFilter receiverFilter;
        
        private MessageReceiver messageReceiver;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        sender=(TextView)findViewById(R.id.sender);
        content=(TextView)findViewById(R.id.content);
        
        receiverFilter = new IntentFilter();
        receiverFilter.addAction("android.provider.Telephony.SMS_RECEIVED");
        receiverFilter.setPriority(100);
        messageReceiver=new MessageReceiver();
        //第一个参数表示将要执行的方法,第二个表示接受的广播
        registerReceiver(messageReceiver, receiverFilter);
        }
        
        
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            //动态注册广播,要在ondestroy()方法中取消注册
            unregisterReceiver(messageReceiver);
        }
    
    
    
        class MessageReceiver extends BroadcastReceiver{
    
            @Override
            public void onReceive(Context context, Intent intent) {
                
                Bundle bundle=intent.getExtras();
                
                Object[] pdus=(Object[]) bundle.get("pdus");
                
                SmsMessage[] messages=new SmsMessage[pdus.length];
                
                for(int i=0;i<messages.length;i++){
                    messages[i]=SmsMessage.createFromPdu((byte[]) pdus[i]);
                }
                //获取发送方号码
                String address = messages[0].getOriginatingAddress();
                String fullMessage="";
                for(SmsMessage message:messages){
                    fullMessage +=message.getMessageBody(); //获取短信内容
                }
                sender.setText(address);
                content.setText(fullMessage);
                //abortBroadcast();
            }
            
        }
        
    }

    3.最后要在AndroidManifest.xml中声明权限
    <uses-permission android:name="android.permission.RECEIVE_SMS"/>

    4.运行图

    ps:这里的接受方式好像是API11之前的方法,现在已经不建议使用了

  • 相关阅读:
    MB52增强
    采购订单创建、修改、审批增强ME21N/ME22N/ME28/ME29N
    SAP调用RestfulApi接口POST数据到外部系统
    SAP ABAP: 把内表数据以excel或csv格式,通过前台或者后台的方式上传至FTP服务器
    Docker 入门
    CentOS 扩容
    ubuntu查看防火墙状态
    No module named ds_store
    Django Ajax 实现历史图形查询
    Django 前端BootCSS 实现分页
  • 原文地址:https://www.cnblogs.com/mercuryli/p/4506356.html
Copyright © 2011-2022 走看看