code: public Cursor getCursor() throws SQLException {
  		if (cursor == null) {
  			String finalSql = null;
  			try {
  				if (max == null) {
  					finalSql = sql;
  				} else {
  					finalSql = sql + " LIMIT " + max;
  				}
  				if (cancelQueriesEnabled) {
  					cancellationHook = apiCompatibility.createCancellationHook();
  				}
  				cursor = apiCompatibility.rawQuery(db, finalSql, getStringArray(), cancellationHook);
  				cursor.moveToFirst();
  				logger.trace("{}: started rawQuery cursor for: {}", this, finalSql);
  			} catch (android.database.SQLException e) {
  				throw SqlExceptionUtil.create("Problems executing Android query: " + finalSql, e);
  			}
  		}
  
  		return cursor;
  	}
docs: *
  This is mostly an internal class but is exposed for those people who need access to the Cursor itself.
  
  <p>
  NOTE: This is not thread safe. Not sure if we need it, but keep that in mind.
  </p>