Android(安卓)获取未读短信(sms)数量
16lz
2021-01-26
文章目录
- 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
更多相关文章
- Android(安卓)Contacts(二)—— SMS 短信 与 Contacts 联系人关联
- Android写入内部存储和sd卡
- Android调用系统图片裁剪限定尺寸及7.0照相问题的解决方法
- Android仿微信录制语音
- [置顶] Android(安卓)LockScreen
- Android(安卓)Studio 自带模拟器获取root权限
- Android(安卓)安全提示 笔记
- android 创建service root权限执行脚本
- Android(安卓)---模拟手机发送短信