阿里云国际站:android 4 拦截短信

在Android 4中,我们可以使用BroadcastReceiver拦截短信。这里有一个简单的例子,可以参考。

首先我们需要在AndroidManifest.xml中声明权限并添加对应的元素:

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

<receiver android:name=".SmsReceiver">
     <intent-filter android:priority="1000">
         <action android:name="android.provider.Telephony.SMS_RECEIVED" />
     </intent-filter>
</receiver>

这里我们声明了接收和读取短信的权限,然后注册了一个BroadcastReceiver。并且设置了优先级为1000,这是为了尽可能先处理短信。

然后我们需要实现SmsReceiver:

阿里云国际站:android 4 拦截短信
public class SmsReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // Retrieves a map of extended data from the intent.
        final Bundle bundle = intent.getExtras();

        try {
            if (bundle != null) {
                final Object[] pdusObj = (Object[]) bundle.get("pdus");

                for (int i = 0; i < pdusObj.length; i++) {
                    SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);

                    String senderNum = currentMessage.getDisplayOriginatingAddress();
                    String message = currentMessage.getDisplayMessageBody();

                    // Check if message matches your criteria
                    if (senderNum.equals("your number") && message.startsWith("some text")) {
                        // Do something
                        // If you want to make sure SMS is not delivered to other applications
                        abortBroadcast();
                    }

                } // end for loop

            } // bundle is null

        } catch (Exception e) {
            Log.e("SmsReceiver", "Exception: " + e);
        }
    }
}

在这段代码中,我们在onReceive方法中获得了短信相关信息,然后根据号码和短信内容做了一些操作。如果你想阻止短信传递给其他应用,可以调用abortBroadcast方法。

注意,这种方式在Android 4.4或之后的版本中可能会不起作用,因为Google修改了处理短信的方式。在4.4或之后的版本中,你可能需要把你的应用设为默认短信应用才能处理短信。或者你可以使用其他方式来获取短信,例如使用NotificationListenerService来读取短信通知。

发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/171539.html

(0)
luotuoemo的头像luotuoemo
上一篇 2024年3月24日 21:34
下一篇 2024年3月24日 21:48

相关推荐

  • 济宁阿里云代理商:阿里云专有云

    阿里云专有云是阿里云提供的一种云计算解决方案,可以为企业提供独享的、定制化的云资源。作为济宁的阿里云代理商,我们可以为济宁地区的企业提供阿里云专有云的销售和技术支持服务。 阿里云专有云可以帮助企业在云上部署自己的专属资源,提供高可用、高稳定性的计算和存储能力。通过专有云,企业可以根据自身需求定制云资源配置,包括计算资源、存储设备、网络环境等。 作为阿里云代理…

    2024年1月9日
    29400
  • 济宁阿里云代理商:安卓上传到服务器失败怎么办

    如果安卓上传到服务器失败,可以尝试以下几个步骤来解决问题: 检查网络连接:确保安卓设备连接到了一个可靠的网络,可以尝试连接其他网络进行测试。 检查服务器设置:确保服务器设置正确,并且允许安卓设备进行上传操作。 检查文件大小限制:如果上传的文件太大,超出了服务器的文件大小限制,可以尝试压缩文件或者分段上传。 检查文件格式限制:有些服务器对上传文件的格式有限制,…

    2024年2月6日
    27100
  • 东莞阿里云代理商:android分享网络图片

    要实现在Android上分享网络图片,可以按照以下步骤: 在AndroidManifest.xml文件中添加以下权限: <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="an…

    2024年3月9日
    25600
  • 阿里云数据库考试

    阿里云数据库考试是由阿里云举办的一种评估考试,目的是考察考生对于阿里云数据库的基本知识和技能的掌握程度。考试内容包括阿里云数据库的架构、功能、使用方法和管理技巧等方面的知识。考试形式一般为在线答题,考生需要按时完成规定的题目,并根据自身的实际操作经验进行答题和解答。 阿里云数据库考试对于那些希望在阿里云数据库领域获得认可的人来说非常重要。通过考试,考生可以证…

    2023年8月16日
    32400
  • 阿里云号码隐私保护自动取消

    阿里云号码隐私保护服务是一项由阿里云提供的功能,它可以为用户的手机号码提供保护,防止个人隐私被泄露。用户可以选择开启或者关闭这项服务。 如果用户想要取消阿里云号码隐私保护服务,可以按照以下步骤操作: 登录阿里云控制台,进入号码隐私保护服务管理页面。 在号码隐私保护服务管理页面中,找到需要取消保护的手机号码。 点击对应手机号码的“取消保护”按钮。 系统会弹出确…

    2023年10月5日
    36800

发表回复

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

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
购买阿里云服务器请访问:https://www.4526.cn/