私は現在使用しています
ContentResolver cr = getContentResolver();
Uri uri = Uri.parse("content://sms/");
Cursor messagesCursor = cr.query(uri, new String[] { "_id", "address", "body", "person" }, null, null, null);
if (messagesCursor.getCount() > 0) {
while (messagesCursor.moveToNext()) {
colName = getContactName(messagesCursor.getString(messagesCursor.getColumnIndex("address"))) + "\n";
}
}
ユーザーの受信ボックス内のすべてのテキストを取得します。そこからmessagesCursor.getColumnIndex("address")
、SMSの番号を取得します。次にgetContactName()
、連絡先のリストから連絡先の名前を取得する場所に配置されます。
このメソッドは、すべての単一のテキストメッセージを通過し、番号を取得し、連絡先の名前を取得し、名前が配列に存在するかどうかを確認し、配列に配置されていない場合は、そこからListViewを作成するために長い時間がかかります。
ユーザーの受信トレイに大量のテキストが含まれている場合、アプリの起動時にロードに長い時間がかかります。
受信トレイから一意の番号を取得する特別な方法はありますか?何かcr.query
?
前もって感謝します。(:
編集 :
単純な受信トレイアプリケーションを作成しています。元の受信トレイメッセージから読み取り、その中のメッセージを一覧表示します。
このプロジェクトでは、電話番号であるすべての「アドレス」を読み取り、それをArrayListに入れ、最後にListViewに移動しました。受信トレイ内のすべてのメッセージを循環するため、起動に長い時間がかかります。
例えば :
受信トレイメッセージ
人1
人1
人1
人2
人2
人3
人3
人3
人3
私の現在のコードは何をしますか:
すべての単一のメッセージを読む
ArrayListの名前を確認してください
そうである場合は、スキップしてください。そうでない場合は、配列を追加します。
ArrayListをListViewにスローします。
私の意図は何でしたか:
読み取るだけのコード:
人1
人2
人3