1

受信トレイからメッセージを読み取る方法はすでに知っていますが、トランザクションメッセージのみを読み取り、トランザクション金額、クレジットデビットなど のリストビューに表示する Android アプリを実装したいと考えています。SMS データを取得するための現在の完全なコード。要件に従って SMS データをフィルタリングする方法。

public List<SmsInfo> getSmsInfo() {
        String[] projection = new String[] { "_id", "address", "person",
                "body", "date", "type" };

//      @SuppressWarnings("deprecation")
//      Cursor cursor = activity.managedQuery(uri, projection, null, null,
//              "date desc");

        ContentResolver cr = activity.getContentResolver();
        Cursor cursor = cr.query(uri, projection, null, null, "date desc");

        int nameColumn = cursor.getColumnIndex("person");
        int phoneNumberColumn = cursor.getColumnIndex("address");
        int smsbodyColumn = cursor.getColumnIndex("body");
        int dateColumn = cursor.getColumnIndex("date");
        int typeColumn = cursor.getColumnIndex("type");
        if (cursor != null) {
            int i = 0;
            while (cursor.moveToNext() && i++ < 20) {
                SmsInfo smsInfo = new SmsInfo();
                smsInfo.setName(cursor.getString(nameColumn));
                smsInfo.setDate(dateFromLongToString(cursor.getString(dateColumn)));
                smsInfo.setPhoneNumber(cursor.getString(phoneNumberColumn));
                smsInfo.setSmsbody(cursor.getString(smsbodyColumn));
                smsInfo.setType(cursor.getString(typeColumn));
                String personName = getPeople2(smsInfo.getPhoneNumber());
                smsInfo.setName(null == personName ? smsInfo.getPhoneNumber()
                        : personName);
                infos.add(smsInfo);
            }
            cursor.close();
        }
        return infos;
    }
4

4 に答える 4

0

簡単なアイデアとして、いくつかのアプローチを提案したいと思います。

まず第一に、受信トレイからトランザクション タイプのメッセージを並べ替えるのは非常に困難です。できることは、各メッセージを調べて本文を読み、必要なメッセージ リストを見つけることだけですが、それも実現可能ではありません。

たとえば、SMS はアドレス、本文、受信日などのすべてのフィールドを所有しているため、アドレス フィールドにアクセスして必要なことを行う必要があります。

また、あなたが言ったように、受信トレイからメッセージを読む方法を知っているので、その部分はスキップします。このライブラリを参照するのに役立つリンクをいくつか添付して 、もう 1 つ

于 2016-10-14T06:54:19.223 に答える