如何有效使用APK短信接收功能?

短信接收在Android系统中是通过监听系统广播来实现的,当手机接收到一条短信时,系统会发出一条值为“android.provider.Telephony.SMS_RECEIVED”的广播,每个应用程序都可以在广播接收器里对这个广播进行监听,收到广播时再从中解析出短信的内容即可。

具体实现步骤如下:

1、修改布局文件:在activity_main.xml中添加两个TextView用于显示短信的发送方和内容。

   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
       xmlns:tools="http://schemas.android.com/tools"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:orientation="vertical">
       <LinearLayout
           android:layout_width="match_parent"
           android:layout_height="wrap_content">
           <TextView
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:padding="10dp"
               android:layout_gravity="center_vertical"
               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:padding="10dp"
               android:layout_gravity="center_vertical"
               android:text="Content:" />
           <TextView
               android:id="@+id/content"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:layout_gravity="center_vertical" />
       </LinearLayout>
   </LinearLayout>

2、修改MainActivity代码:在MainActivity中获取TextView实例,并创建一个广播接收器来接收短信广播。

   package com.jack.smstest;
   import android.os.Bundle;
   import android.app.Activity;
   import android.content.BroadcastReceiver;
   import android.content.Context;
   import android.content.Intent;
   import android.content.IntentFilter;
   import android.telephony.SmsMessage;
   import android.view.Menu;
   import android.widget.TextView;
   public class MainActivity extends Activity {
       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");
           messageReceiver = new MessageReceiver();
           registerReceiver(messageReceiver, receiverFilter); //注册广播
       }
       @Override
       public boolean onCreateOptionsMenu(Menu menu) {
           getMenuInflater().inflate(R.menu.main, menu);
           return true;
       }
       class MessageReceiver extends BroadcastReceiver {
           @Override
           public void onReceive(Context context, Intent intent) {
               Bundle bundle = intent.getExtras();
               if (bundle != null) {
                   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);
               }
           }
       }
   }

3、权限声明:在AndroidManifest.xml中添加读取短信的权限。

   <uses-permission android:name="android.permission.READ_SMS" />
   <uses-permission android:name="android.permission.RECEIVE_SMS" />

通过以上步骤,就可以在自己的应用程序中接收并显示短信了,需要注意的是,从Android 6.0(API level 23)开始,动态权限申请是必须的,因此在实际开发中还需要处理运行时权限申请的问题。

各位小伙伴们,我刚刚为大家分享了有关“apk短信接收”的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/695575.html

Like (0)
Donate 微信扫一扫 微信扫一扫
K-seo的头像K-seoSEO优化员
Previous 2024-12-02 00:51
Next 2024-12-02 00:55

相关推荐

  • 如何正确使用AT指令接收短信?

    AT指令收短信AT指令(Attention Command)是一种用于控制调制解调器的标准命令集,广泛应用于通信领域,通过AT指令,用户可以发送短信、拨打电话、接收短信等操作,本文将详细介绍如何使用AT指令收短信,1. 准备工作在使用AT指令收短信之前,我们需要准备以下设备和软件:- 一台支持串口通信的计算机……

    2024-11-19
    03
  • 如何确保App能成功接收到短信?

    App接收短信的工作原理与实现方式在现代社会,短信(SMS)作为一种传统的通信方式,仍然扮演着重要的角色,尽管即时通讯应用如WhatsApp、WeChat等日益普及,但在某些情况下,短信仍然是不可或缺的通信手段,许多应用程序需要具备接收短信的功能,以便为用户提供更加全面和便捷的服务,本文将详细介绍App接收短信……

    2024-11-25
    07
  • 如何通过AT指令接收短信?

    AT指令(Attention指令)是一种用于控制调制解调器的命令集,通过这些指令可以实现对移动设备的短信接收、发送等操作,本文将详细介绍如何使用AT指令接收短信,包括相关命令、参数设置以及示例代码,一、AT指令概述AT指令是一组标准化的命令集,用于控制调制解调器进行各种通信操作,在短信收发方面,AT指令可以实现……

    2024-11-16
    04
  • 如何通过APP接收短信?探索便捷的信息获取方式

    您提到的“app 收短信”这个表述可能有些许歧义,为了给您提供更准确的帮助,我需要进一步了解您的意思,这里有两种可能的情况:1、您指的是使用某个应用程序来接收短信:如果您是在询问如何通过一款特定的APP接收短信,那么请提供该APP的具体名称或者详细描述其功能和特点,这样我才能针对性地为您提供操作指南或解答相关疑……

    2024-12-06
    03
  • 如何通过AT命令接收短信?

    AT命令接收短信AT命令是一种用于控制调制解调器(Modem)的指令集,它允许计算机通过串行端口或USB接口与调制解调器进行通信,在移动通信领域,AT命令也被广泛应用于手机和其他移动设备中,以实现对设备的远程控制和数据交换,本文将详细介绍如何使用AT命令接收短信,一、AT命令概述AT命令是一组标准化的命令,用于……

    2024-11-16
    07
  • 如何通过AT命令接收短信?

    一、AT命令概述定义:AT命令,即Attention命令,是一种标准化的指令集,用于控制调制解调器(Modem)或其他通信设备,通过这些命令,用户可以控制电话的功能,如拨号、接听电话、发送和接收短信等,历史背景:AT命令最初由Hayes Microcomputer Products公司在1970年代末至1980……

    2024-11-16
    04

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入