`
fanfq
  • 浏览: 270832 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

获取手机短信

阅读更多

import android.content.pm.PackageManager;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import android.app.Activity;
import android.database.ContentObserver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    private TextView vSms;//短信内容TextView
    private SMSContent smsObsever;//短信观察者

    private Handler handler = new Handler() {
        public void handleMessage(android.os.Message msg) {
            Bundle bundle = msg.getData();
            String body = bundle.getString("body");
            vSms.setText(body);
        }

        ;
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        vSms = (TextView) this.findViewById(R.id.tx_sms);//短信内容显示
        smsObsever = new SMSContent(handler);//实例化短信观察者
        //注册短信观察者
        getContentResolver().registerContentObserver(Uri.parse("content://sms/"), true, smsObsever);
    }

    /**
     * @author Administrator
     * @description 短信观察者
     */
    class SMSContent extends ContentObserver {
        private Handler mHandler;

        public SMSContent(Handler handler) {
            super(handler);
            mHandler = handler;
        }

        @Override
        public void onChange(boolean selfChange) {
            super.onChange(selfChange);
            Cursor cursor = null;
            String body = null;

            //申请读取短信的权限,需要与用户交互
            final int REQUEST_CODE_ASK_PERMISSIONS = 123;
            ActivityCompat.requestPermissions(MainActivity.this, new String[]{"android.permission.READ_SMS"}, REQUEST_CODE_ASK_PERMISSIONS);

            //读取之前判断一下是否已经渠道权限
            if (ContextCompat.checkSelfPermission(getBaseContext(), "android.permission.READ_SMS") == PackageManager.PERMISSION_GRANTED) {
                try {
                    cursor = getContentResolver().query(
                            Uri.parse("content://sms/inbox"), null, null, null,
                            "date desc");
                    if (cursor != null) {
                        if (cursor.moveToNext()) {//不遍历只拿当前最新的一条短信
                            //获取当前的短信内容
                            body = cursor.getString(cursor.getColumnIndex("body"));
                            Message msg = Message.obtain();
                            Bundle bundle = new Bundle();
                            bundle.putString("body", body);
                            msg.setData(bundle);
                            mHandler.sendMessage(msg);
                        }

                    }
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    if (cursor != null) {
                        cursor.close();
                    }

                }
            }
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //取消注册
        getContentResolver().unregisterContentObserver(smsObsever);
    }
}





<!--收短信的权限-->
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<!--读取短信信息的权限-->
<uses-permission android:name="android.permission.READ_SMS"/>
分享到:
评论

相关推荐

    Android获取手机短信

    在Android平台上,获取手机短信是一项常见的功能,尤其在开发与短信相关的应用时,如验证码接收、备份或管理短信等。Android系统提供了丰富的API接口供开发者使用,使得我们能够方便地读取、操作甚至监听短信的变化...

    获取手机短信验证码源码

    本文将围绕“获取手机短信验证码源码”这一主题,深入探讨其背后的实现原理、关键技术和相关知识点。 首先,我们要了解手机短信验证码的基本流程。通常,当用户在应用或网站上进行敏感操作时,系统会向用户注册的...

    android 获取手机短信内容并及时刷新短信

    在Android平台上,获取手机短信内容并实时刷新是一项常见的需求,特别是在开发与消息处理相关的应用程序时。这个过程涉及到Android系统的SMS(Short Message Service)API以及监听短信变化的能力。下面将详细介绍...

    Android动态权限申请获取手机短信息及通话记录

    标题"Android动态权限申请获取手机短信息及通话记录"涉及的核心知识点主要包括以下几个方面: 1. **运行时权限**:Android 6.0及以上版本,对于`危险权限`(如访问联系人、短信、通话记录等),应用需要在运行时...

    android获取手机短信

    ### Android 获取手机短信知识点 #### 一、概述 在Android开发中,有时我们需要读取设备上的短信信息。例如,为了实现自动验证功能或提取特定类型的短信数据等。本篇文章将详细解析如何通过Java代码实现从Android...

    android 获取手机短信信息

    在Android平台上,获取手机短信信息是一项常见的功能,尤其在开发涉及通信管理或信息备份的应用时。本文将深入探讨如何在Android应用中实现这一操作,并基于提供的"SMSDemo"压缩包文件,来解析其核心知识点。 首先...

    python实现发送和获取手机短信验证码

    主要介绍了python实现发送和获取手机短信验证码的相关资料,讲解了python如何解决接口测试获取手机验证码问题,感兴趣的小伙伴们可以参考一下

    android获取手机短信,删除短信功能

    在Android平台上,获取和操作手机短信是常见的功能需求,尤其对于开发者来说,这可能是构建诸如安全验证、消息管理应用等的必备技能。本篇将详细阐述如何在Android中实现获取和删除短信的功能。 首先,我们需要了解...

    读取android手机内所有短信

    在Android平台上,获取手机内的所有短信是一项常见的任务,特别是在开发涉及短信功能的应用程序时。本文将详细介绍如何在Android中读取短信,以及涉及到的相关知识点。 首先,为了读取短信,我们需要使用Android...

    JS实现获取短信验证码功能(前台代码)

    本教程将详细介绍如何使用JavaScript实现获取短信验证码的功能,结合jQuery库,让这个过程更加简便易懂。 首先,短信验证码的主要目的是为了增加用户账户的安全性,防止恶意注册或登录。通常,当用户在网站上注册或...

    短信信息实时获取源码

    【短信信息实时获取源码】是一个适用于Android初学者的编程示例,主要目的是教会开发者如何在Android应用中实现实时获取手机短信的功能。这个源码简单易懂,非常适合那些希望将短信功能集成到自己项目的开发者。 在...

    android 获取手机电话号码短信内容

    在Android平台上,获取手机电话号码和短信内容是两个不同的任务,涉及到系统权限和特定API的使用。下面将分别详细介绍这两个知识点。 ### 手机电话号码的获取 在Android中,获取设备的电话号码通常需要使用`...

    火山一键获取所有联系人信息类.rar

    这个"火山一键获取所有联系人信息类.rar"文件很可能是提供了一个Java或Kotlin类,用于在Android系统上方便快捷地获取用户手机中的联系人数据。火山安卓可能是一个特定的开发框架或者工具集,专门用于简化安卓应用的...

    Android遍历手机短信并发送至指定邮箱(可直接运行)

    【Android遍历手机短信并发送至指定邮箱】的知识点涵盖了Android平台上的短信读取和电子邮件发送功能。在Android系统中,应用可以通过权限访问短信数据库,提取短信内容,并使用SMTP协议将这些信息发送到预设的电子...

    易语言手机短信设备支持库(Phone.fne)

    3. **设备管理**:库提供了设备管理功能,允许开发者获取手机短信设备的状态信息,如连接状态、信号强度等,从而更好地控制短信通信过程。 4. **错误处理**:在开发过程中,错误处理是非常关键的一环。Phone.fne库...

    获取Android手机中所有短信的实现代码

    在Android平台上,获取手机中所有短信的实现代码涉及到对Android系统的Content Provider的使用。Content Provider是Android系统中数据共享和交换的重要机制,它允许应用程序访问其他应用的数据,比如短信存储在系统...

    安卓获取手机信息Demo

    【安卓获取手机信息Demo】是一个Android应用程序示例,旨在教授开发者如何在Android平台上获取设备的相关信息,如手机厂商、型号等。这个项目是基于Android 5.0(API级别21)编译的,因此它遵循了Android Lollipop及...

    C#程序实现手机发短信

    根据给定的信息,本文将详细解释如何使用C#语言实现手机发送短信的功能,并解析部分代码内容,同时对问题描述中的常见问题进行解答。 ### C#程序实现手机发短信 在现代通讯技术中,通过编程方式发送短信变得越来越...

Global site tag (gtag.js) - Google Analytics