在Android上读取短信的方法如下:
1. 首先,您需要声明READ_SMS权限。在您的AndroidManifest.xml文件中添加以下行:
<uses-permission android:name="android.permission.READ_SMS" />
2. 创建一个实现ContentObserver接口的类来监听短信数据库的变化。例如:
public class SmsObserver extends ContentObserver {    private Context context;
    public SmsObserver(Context context, Handler handler) {
        super(handler);
        this.context = context;
    }
    @Override
    public void onChange(boolean selfChange) {
        super.onChange(selfChange);
        // 在这里处理短信数据库变化的逻辑
    }
}
3. 注册短信观察者并开始监听短信数据库的变化。例如,在您的Activity或Service中:
// 定义观察者对象SmsObserver smsObserver = new SmsObserver(this, new Handler());
// 获取ContentResolver对象
ContentResolver contentResolver = getContentResolver();
// 注册观察者,并指定要监视的URI
contentResolver.registerContentObserver(Uri.parse("content://sms"), true, smsObserver);
4. 在观察者的onChange方法中,您可以通过查询短信数据库来获取最新的短信信息。例如:
Uri uri = Uri.parse("content://sms");String[] projection = new String[]{"_id", "address", "body", "date"};
Cursor cursor = getContentResolver().query(uri, projection, null, null, "date DESC");
if (cursor != null && cursor.moveToFirst()) {
    String address = cursor.getString(cursor.getColumnIndex("address"));
    String body = cursor.getString(cursor.getColumnIndex("body"));
    long date = cursor.getLong(cursor.getColumnIndex("date"));
    // 处理短信信息
    Log.d("SMS", "Address: " + address);
    Log.d("SMS", "Body: " + body);
    Log.d("SMS", "Date: " + new Date(date));
    cursor.close();
}
请注意,读取短信的功能在Android 4.4 (API level 19)及更高版本中受到限制。从Android 4.4开始,您需要作为默认短信应用程序才能读取短信。