MatrixCursorに関して、使用例を次に示します。
これにより、復号化されたバージョンのデータが返されます(この場合、1つの列のみですが、完全なバージョンでは、多数の列が暗号化されます)。
public MatrixCursor decyrptedCard(long cardid) {
EncryptDecrypt ed = new EncryptDecrypt(mContext,
LoginActivity.getCurrentUserPassWord(),
MainActivity.mCurrentUserid);
String[] mcsrcolumns = {
DBCardsTableConstants.CARDID.getDBColumnName(),
DBCardsTableConstants.CARDNAMEONCARD.getDBColumnName()
};
MatrixCursor cnvcsr = new MatrixCursor(mcsrcolumns,0);
String whereclause = DBCardsTableConstants.CARDID.getDBColumnName() +
"=?";
String[] whereargs = {Long.toString(cardid)};
Cursor basecsr = db.query(DBCardsTableConstants.CARDS.getDBTableName(),
null,
whereclause,
whereargs,
null,null,null,null);
if (!basecsr.moveToFirst()) {
cnvcsr.addRow(new Object[]{0L,"NOTACARD"});
return cnvcsr;
}
cnvcsr.addRow(new Object[]{
basecsr.getLong(
basecsr.getColumnIndex(
DBCardsTableConstants.CARDID.getDBColumnName()
)),
ed.decrypt(
basecsr.getString(
basecsr.getColumnIndex(
DBCardsTableConstants.CARDNAMEONCARD.getDBColumnName()
)
)
)
});
basecsr.close();
return cnvcsr;
}
つまり、インスタンスを作成するときに列を定義することを除いて、通常のカーソルを使用する場合と少し異なります。次に、メソッドを使用して行を追加できますaddRow
。