文章目录

        • 1、简介
        • 2、代码结构
        • 3、AndroidManifest 文件添加读取 短信权限
        • 4、MainActivity 功能实现
        • 5、log 结果显示

1、简介

获取手机未读短信数量

2、代码结构

3、AndroidManifest 文件添加读取 短信权限

    

4、MainActivity 功能实现

package com.example.tssh.mytestsms;import android.Manifest;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.content.pm.PackageManager;import android.database.ContentObserver;import android.database.Cursor;import android.net.Uri;import android.os.Handler;import android.support.v4.app.ActivityCompat;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;public class MainActivity extends AppCompatActivity {    private String TAG  = "MainActivity: ";//短信到来时 调用 onChange 函数    private ContentObserver newMmsContentObserver = new ContentObserver(new Handler()) {        public void onChange(boolean selfChange) {            System.out.println("接收到的广播的数据````````:");            getUnreadSmsCount();        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        registerObserver();  //注册监听接受短信        checkPermission();  //检查权限        getUnreadSmsCount();  //读未读短信数目    }    private void registerObserver() {        unregisterObserver();        getContentResolver().registerContentObserver(Uri.parse("content://sms"), true,                newMmsContentObserver);    }    private synchronized void unregisterObserver() {        try {            if (newMmsContentObserver != null) {                getContentResolver().unregisterContentObserver(newMmsContentObserver);            }        } catch (Exception e) {            Log.e(TAG, "unregisterObserver fail");        }    }        //得到未读短信的数量  通过查询数据库得到    private void getUnreadSmsCount() {        int result = 0;        Cursor csr = getContentResolver().query(Uri.parse("content://sms"), null,                "type = 1 and read = 0", null, null);        if (csr != null) {            result = csr.getCount();            csr.close();            Log.i(TAG,"得到的未读短短信数量是:" + result);        }    }    //sd 卡权限检查    private void checkPermission() {        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_SMS)                != PackageManager.PERMISSION_GRANTED &&                ActivityCompat.checkSelfPermission(this, Manifest.permission.RECEIVE_SMS)                        != PackageManager.PERMISSION_GRANTED) {            Log.i(TAG,"没有权限进行申请");            ActivityCompat.requestPermissions(this, new String[]                    {Manifest.permission.READ_SMS,Manifest.permission.RECEIVE_SMS},100);        } else {            Log.i(TAG,"已经有权限");        }    }    //sd 卡权限申请    @Override    public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {        if(requestCode == 100){            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {                Log.i(TAG,"用户同意权限申请");            } else {                Log.i(TAG,"用户不同意权限申请");            }        }    }    @Override    protected void onDestroy() {        //取消注册        unregisterObserver();        super.onDestroy();    }}

5、log 结果显示


文献参考:
Android 获取未读未接来电和未读短信数量
https://blog.csdn.net/sfh366958228/article/details/20319761

Android实现获取未接来电和未读短信数量的方法_Android
https://yq.aliyun.com/ziliao/145858

更多相关文章

  1. Android(安卓)Contacts(二)—— SMS 短信 与 Contacts 联系人关联
  2. Android写入内部存储和sd卡
  3. Android调用系统图片裁剪限定尺寸及7.0照相问题的解决方法
  4. Android仿微信录制语音
  5. [置顶] Android(安卓)LockScreen
  6. Android(安卓)Studio 自带模拟器获取root权限
  7. Android(安卓)安全提示 笔记
  8. android 创建service root权限执行脚本
  9. Android(安卓)---模拟手机发送短信

随机推荐

  1. Ubuntu 系统上编译Android 系统
  2. [置顶] Android进程间通信AIDL的使用分析
  3. Android音视频处理之MediaExtractor
  4. 求助: Android 加载 webview, 点击webvie
  5. android 布局文件属性说明
  6. Android imageView 属性知识
  7. android TextView xml中设置最大行数
  8. android 问题总结
  9. android 开发包的离线安装方式
  10. Android —— 第一次安装 Android Studio