小米手机读取手机短信

由于小米的系统屏蔽了短信广播事件。通过广播事件读取短信的方法失败。

所以使用读取短信数据库的方法来读取短信

需要读取短信权限

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

读取短信类

package com.heima.readsms;

import android.app.Activity;
import android.content.ContentValues;
import android.database.ContentObserver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Handler;
import android.os.Message;

public class SMSContent extends ContentObserver {

	private Cursor cursor = null;
	private String last_id = "";
	private Activity activity;
	private Uri uri;

	public SMSContent(Handler handler, Activity activity) {
		super(handler);
		// this.handler = handler;
		this.activity = activity;
	}

	@Override
	public void onChange(boolean selfChange) {
		super.onChange(selfChange);

		// 读取收件箱中指定号码的短信
		cursor = activity.managedQuery(Uri.parse("content://sms/inbox"),
				new String[] { "_id", "address", "read", "body" }, "read=?", new String[] { "0" }, "date desc");
		if (cursor != null) {
			if (cursor.moveToFirst()) {
				String phone = cursor.getString(cursor.getColumnIndex("address"));
				String body = cursor.getString(cursor.getColumnIndex("body"));
				String _id = cursor.getString(cursor.getColumnIndex("_id"));
				// 缓存上一次信息
				if (!last_id.equals(_id)) {
					System.out.println("1111未接短信---->" + "电话号码:" + phone + "内容:" + body);
					last_id = _id;
					System.out.println(_id);
					ContentValues values = new ContentValues();
					values.put("read", "1"); // 修改短信为已读模式
					Message msg = handler.obtainMessage();
					msg.what = 1;
					msg.obj = phone;
					this.handler.sendMessage(msg);
				}

			}

		}
		cursor.close();
	}

	// 处理接收的短信
	Handler handler = new Handler() {

		@Override
		public void handleMessage(Message msg) {
			switch (msg.what) {
			case 1:
				System.out.println("处理接收的短信" + msg.obj);
				break;

			default:
				break;
			}

		}

	};

}
使用方法:

package com.heima.readsms;

import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;

public class MainActivity extends Activity {
	private Handler handler;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		SMSContent smsContent = new SMSContent(handler, this);
		// 注册短信变化监听
		this.getContentResolver().registerContentObserver(Uri.parse("content://sms/"), true, smsContent);
	}

}


  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Fastboot是一种可以用来在计算机上与Android设备进行通信的工具。它可以读取手机的各种信息,包括设备状态、固件版本、硬件信息等。 通过使用Fastboot命令,我们可以在手机进入fastboot模式后,连接电脑,读取设备的基本信息。例如,可以使用“fastboot devices”命令查看已连接的设备列表,以确定手机是否正确连接到计算机。如果设备正确连接,它将显示设备的序列号。 另外,使用“fastboot getvar all”命令可以获取设备的详细信息,包括设备ID、解锁状态、电池电量等。这些信息可以帮助我们了解手机的基本特性和硬件规格。 Fastboot还提供了一些其他命令,例如“fastboot reboot”用于重新启动设备,“fastboot flash”用于刷入固件等。这些命令可以帮助我们在设备出现问题时进行故障排除、刷入新的固件或恢复出厂设置。 总之,Fastboot是一种强大的工具,可以读取和控制Android设备的各种信息。它可以帮助我们进行设备维护、固件刷入和故障排除等操作,提高了我们对手机的控制能力。 ### 回答2: Fastboot是一种用于在安卓手机上进行低级别操作和调试的开发工具。通过Fastboot可以读取手机的硬件信息和系统状态。 首先,通过在电脑上使用命令提示符或终端,连接手机到电脑。然后,在Fastboot模式下运行相关命令。 通过Fastboot可以读取以下手机信息: 1. 设备信息:可以使用命令"fastboot devices"来检测设备是否连接成功。 2. 设备状态:可以使用命令"fastboot getvar all"来获取设备的各种状态信息,比如设备序列号、产品型号、解锁状态、锁定状态等。 3. 分区表信息:可以使用命令"fastboot oem device-info"来获取设备的分区表信息,包括分区大小、分区格式等。 4. 引导程序信息:可以使用命令"fastboot getvar all"来读取引导程序信息,如版本号、解锁状态等。 5. 系统分区状态:可以使用命令"fastboot getvar all"来读取系统分区的状态信息,如是否解锁、是否处于锁定状态等。 通过读取以上信息,开发者可以判断手机是否正确连接、了解设备的硬件特性、判断引导程序的版本和状态等。这些信息对于开发者以及用户进行手机维护、刷写固件或者进行其他系统操作是非常有用的。 ### 回答3: Fastboot是一种Bootloader模式,主要用于Android设备的刷机和修复操作。通过Fastboot可以读取手机的信息。 使用Fastboot读取手机信息有以下几种方法: 1. 通过命令fastboot devices,可以列出当前已连接到计算机的设备,并显示设备的序列号,从而确认设备已被正确连接。 2. 使用fastboot getvar命令可以获取手机的各种变量信息,如手机型号、序列号、产品代号、CID(运营商标识符)、主版本号、编译时间等。通过这些信息可以了解手机的型号、生产批次、软件版本等信息。 3. 使用fastboot oem device-info命令可以获取更详细的设备信息,包括设备开启状态、锁定状态、解锁状态、FRP(反恢复保护)状态等。这些信息对于一些刷机和解锁的操作是很重要的。 4. 使用fastboot flash命令可以读取手机中的某个分区的内容,如读取boot分区、recovery分区等。这可以用于检查分区中的文件是否存在或是否正确。 以上就是使用Fastboot读取手机信息的方法。通过这些命令,我们可以获取到手机的基本信息以及一些系统配置和状态,这些信息对于进行刷机、修复和调试等操作是非常重要的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值