在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開始,您需要作為默認短信應用程序才能讀取短信。