在 Android 中,我们可以通过访问系统内提供的 SMS Content Provider 来读取最新的短信。以下是一个例子:
注意:从Android 6.0开始,我们必须在运行时请求权限。所以,要先确保你的app已经得到了READ_SMS
权限。
// 检查app是否有读取短信的权限
if(ContextCompat.checkSelfPermission(this, Manifest.permission.READ_SMS) != PackageManager.PERMISSION_GRANTED){
//如果没有权限,则请求权限
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_SMS},0);
}
final String SMS_URI_INBOX = "content://sms/inbox";
Uri uri = Uri.parse(SMS_URI_INBOX);
String[] projection = new String[] { "_id", "address", "person", "body", "date", "type" };
Cursor cur = getContentResolver().query(uri, projection, null, null, "date desc");
if (cur.moveToFirst()) {
String address = cur.getString(cur.getColumnIndex("address"));
String body = cur.getString(cur.getColumnIndex("body"));
System.out.println("SMS: " + body);
}
这个代码会从 SMS Inbox 中读取最新的短信。把查询结果按日期 (date
) 排序,使最新的短信在查询结果的第一个。然后我们即可通过调用 Cursor.moveToFirst()
读取到最新的短信。
不过注意,你需要使用 Android 的 SMS 读取权限 (READ_SMS)。若你的 target SDK 在 23 或以上,你还需要确保在运行时获取这个权限。因为从 Android 6.0 开始,部分权限需要在运行时申请。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/170373.html