Android使用ContentProvider实现查看系统短信功能
作者:星辞归也 发布时间:2023-12-16 23:55:46
标签:Android,系统短信
本文实例为大家分享了使用ContentProvider实现查看系统短信功能的具体代码,供大家参考,具体内容如下
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:id="@+id/tv_show"
android:layout_width="match_parent"
android:layout_height="0dp"
android:textSize="20dp"
android:layout_weight="9"></TextView>
<Button
android:id="@+id/bt_show"
android:layout_weight="1"
android:text="查看短信"
android:onClick="show"
android:layout_width="match_parent"
android:layout_height="0dp"></Button>
</LinearLayout>
Sms.java
public class Sms {
private int id;
private String address;
private String body;
public Sms(int id, String address, String body) {
this.id = id;
this.address = address;
this.body = body;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
}
MainActivity.java
public class MainActivity extends AppCompatActivity {
private TextView tv_show;
private Button bt_show;
private List<Sms> list=new ArrayList<>();
private String text="";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv_show=findViewById(R.id.tv_show);
bt_show=findViewById(R.id.bt_show);
}
public void show(View view) {
ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.READ_SMS},1);
}
public void getSms(){
Uri uri= Uri.parse("content://sms/");
ContentResolver contentResolver=getContentResolver();
Cursor cursor = contentResolver.query(uri, new String[]{"_id", "address",
"body"}, null, null, null);
if (cursor!=null&&cursor.getCount()>0){
if (list!=null){
list.clear();
}
text="";
while (cursor.moveToNext()){
int id=cursor.getInt(0);
String name=cursor.getString(1);
String body=cursor.getString(2);
Sms sms=new Sms(id,name,body);
list.add(sms);
}
for (int i=0;i<list.size();i++){
text+="手机号码:"+list.get(i).getAddress()+"\n";
text+="短信内容:"+list.get(i).getBody()+"\n\n";
}
tv_show.setText(text);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode==1){
for (int i=0;i<permissions.length;i++){
if (grantResults[i]== PackageManager.PERMISSION_GRANTED){
getSms();
}else {
Toast.makeText(MainActivity.this,"无权限",Toast.LENGTH_SHORT).show();
}
}
}
}
}
来源:https://blog.csdn.net/weixin_43916678/article/details/119428728


猜你喜欢
- 先准备好一个新闻实体类package com.zb.fragmentbestpractice/** * title:表示新闻的实体类 * c
- 本篇内容通过操作软键盘的函数着手详细分析了隐藏或者显示软键盘的实现方法,并且对其中重要的代码做了详细分析。一、开篇如果有需要用到输入的地方,
- 前言今天遇到一个需求,需要对word模板进行替换制定的变量在网上找了很多方案,做了很多的demo,下面就把我觉得比较简单的一种分享给大家本次
- 给组件加上 * 定义一个类,这个类继承ActionListenerpubulic class ButListener implements
- 一.有段时间没更了,因为一直在思索,应该写点什么,真的是无比纠结。这一回,就给大家分享一款简便好用的,小编自制的土晾时间轴。附上XML预览图
- 本文实例讲述了Android开发实现删除联系人通话记录的方法。分享给大家供大家参考,具体如下:1. 负责存放呼叫记录的内容提供者源码在 Co
- Android设备的内存有限,对于大图片,必须进行压缩后再进行显示,否则会出现内存溢出:OOM;处理策略:1.使用缩略图(Thumbnail
- 一、使用在非静态方法上public synchronized void syzDemo(){ System.out.print
- 使用 WebView 时,我们通常会重写以下方法:shouldOverrideUrlLoading() onPageStarted()onP
- 项目结构src com servletdemo
- 概述在Spring中,我们可以通过 @Autowired注解的方式为一个方法中注入参数,那么这种方法背后到底发生了什么呢,这篇文章将讲述如何
- Java反射动态修改注解的某个属性值昨晚看到一条问题,大意是楼主希望可以动态得建立多个Spring 的定时任务。这个题目我并不是很熟悉,不过
- 一、Swagger介绍Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的web服务。目标是使客户端和文件
- 本文将介绍通过Java程序来读取PDF文档中的文本和图片的方法。分别调用方法extractText()和extractImages()来读取
- 前言大家好,我是小郭,前面我们学习了利用Semaphore来防止多线程同时操作一个资源,通常我们都会利用并行来优化性能,但是对于串行化的业务
- 前言一个简单的单机小游戏:flypybird ,用来巩固java基础。涉及主要知识点:JFrame 、 JPanel 、 继承、 键盘/鼠标
- 前言本篇教程偏向实战,程序猿直接copy代码加入到自己的项目中做简单的修修改改便可使用,而对于springboot以及mybatis不在此进
- 简单版/** * 产生4位随机数(0000-9999) * * @return 4位随机数 &nb
- disruptor不过多介绍了,描述下当前的业务场景,两个应用A,B,应用 A 向应用 B 传递数据 . 数据传送比较快,如果用http直接
- 本文实例讲述了java针对电话号码正则匹配的方法。分享给大家供大家参考。具体如下:public interface RegExpConst