私はSMSコマンドを認識しなければならないアプリケーションを開発してきました。だから、私は最後のSMSを取得する方法を知る必要があります。BroadcastReceiverを使用する必要があることは知っていますが(そしてそれを使用しています)、このクラスの最後のSMSを取得する方法がわかりません。どうか、私を助けてください、あなたがそれをすることができることを願っています。前もって感謝します。
質問する
4204 次
2 に答える
2
私のブログへのリンクをありがとうボー。
埋め込まれた Android データベース (sqlite) から最後のメッセージを取得するには、最初にカーソル インスタンスを作成する必要があります。
Cursor cursor = context.getContentResolver().query("content://sms", null, null, null, null);
次に、最初の SMS に移動します (最初の SMS は最後の受信者です ;))
cursor.moveToFirst();
Boがあなたに言ったように、私のブログを見てください;)
// リンクを削除
乾杯
于 2012-05-17T14:49:59.880 に答える
1
以下のコードを参照してください。
Uri myMessage = Uri.parse("content://sms/");
ContentResolver cr = con.getContentResolver();
Cursor c = cr.query(myMessage, new String[] { "_id",
"address", "date", "body", "read" }, null,
null, null);
startManagingCursor(c);
Main_calss.getSmsLogs(c, con);
public static final ArrayList<String> sms_num = new ArrayList<String>();
public static final ArrayList<String> sms_body = new ArrayList<String>();
public static void getSmsLogs(Cursor c, Context con) {
if (sms_num.size() > 0) {
sms_num.clear();
sms_body.clear();
}
try {
if (c.moveToFirst()) {
do {
Log.d("error",
""
+ c.getString(c
.getColumnIndexOrThrow("address")));
if (c.getString(c.getColumnIndexOrThrow("address")) == null) {
c.moveToNext();
continue;
}
String Number = c.getString(
c.getColumnIndexOrThrow("address")).toString();
String Body = c.getString(c.getColumnIndexOrThrow("body"))
.toString();
sms_num.add(Number);
sms_body.add(Body);
} while (c.moveToNext());
}
c.close();
} catch (Exception e) {
e.printStackTrace();
}
}
これをしなければならない最後のマッサージを受けてください。
sms_num.get(sms_num.size()-1);
sms_body.get(sms_num.size()-1);
それが正しい場合は、それを正しくします。
于 2012-05-17T14:58:21.773 に答える