Ohjelmoinnin ongelmanurkkaus

10% ALENNUS KOODILLA PAKKOTOISTO
Ja taas vastustaa... tällä kertaa alustana Android, ja tietokannasta haku ei nyt oikein onnistu. Taulussa on n kappaletta tietoja, kaikkien haku kyllä onnistuu mutta kun tarkennetaan hakuehtoa niin tuloksena on vain virheilmoitusta:
"Bad request for field 0,-1. numrows = 1, numcolumns = 3"
"get field slot from 0 col -1 failed"
Ja koodi näyttää tuolta:
Koodi:
public Cursor getInfo(String id)
{
    return db.rawQuery("select d1, d2, d3 from taulu where id=\"+id"+"\"", null);
}

Ei merkitystä onko tuo id laitettu tyyliin "id" tai 'id' tai ilman mitään, aina feilaa....

Tuossa on potentiaalia melko isolle SQL-injektionille. Eikö kannattas tehä parametroituna niin on huomattavasti helpompi kirjottaa, lukea ja debugata, eikä tule niitä reikiä.
Koodi:
  return db.rawQuery("select d1, d2, d3 from taulu where id=?", new String[] { id });
 
Inska: Se id voi olla millainen merkkijono tahansa, vaikkas "ABC123"
Debugger: Kokeiltu tuolla ehdottamallasi tavalla, tulos sama kuin yllä, "Bad request for field 0,-1. numrows = 1, numcolumns = 3"

Tutkitaan ja hutkitaan...

edit: ei prkl, toimihan tuo sittenkin. Tuon Cursorin käsittely olikin se joka feilas :nolo: :wall:
 
Kysytääs vielä tällaista Android-ongelmaa. Activityssä A on funktio josta kutsutaan pitkäkestoista toimintoa joka toteutettu private luokassa joka extends AsyncTask. Tuossa ei mitään ongelmaa, näytetään progressdialogia ja poistetaan kun homma tehty, no problemos. Mutta nyt kysynkin että voiko tuosta luokasta jotenkin käsitellä käyttöliittymää vai pitääkö lukea paluuarvo ja toimia sen mukaan?
 
Kysytääs vielä tällaista Android-ongelmaa. Activityssä A on funktio josta kutsutaan pitkäkestoista toimintoa joka toteutettu private luokassa joka extends AsyncTask. Tuossa ei mitään ongelmaa, näytetään progressdialogia ja poistetaan kun homma tehty, no problemos. Mutta nyt kysynkin että voiko tuosta luokasta jotenkin käsitellä käyttöliittymää vai pitääkö lukea paluuarvo ja toimia sen mukaan?
En taas oikein muista kuinka nuo Androidissa menee, mutta threadistä voi ainakin päivittää UI:n runOnUiThread:llä.
 
JS kyssäri?

Miten toimii document.write, kun kyseessä on erillinen js-tiedosto? Ihan perusjuttuja, mutta ei onnistu.

Koodi:
function getRandom(nums)
    {
        var ranNum= Math.floor(Math.random()*nums);
        return ranNum;
    }

    var numberOfImages = 4;
    var randomNumber = getRandom(numberOfImages);
    var image = new Array(numberOfImages);

    image[0]="images/bg_001.jpg";
    image[1]="images/bg_002.jpg";
    image[2]="images/bg_003.jpg";
    image[3]="images/bg_004.jpg";
    
    document.write("<img src='" + image[randomNumber] + "' />"
);

Eli pitäisi tuo image tagi saada html:lään?
 
Ja taas Android-ongelmaa puskee...
Eli olen saanut kopioitua emulaattorin sdkortille pienen html-filun joka sisältää javascriptiä.
Nyt tuo filee pitäisi saada auki siten että javascripti suoritetaan.
Kokeilin ensin luoda uuden intentin, ja setDataAndType:llä saan kyllä sivulla määritellyn titlen näkyviin mutta javascript ei käynnisty.
No, sitten pienen googlettelun jälkeen päätin kokeilla WebView:iä koska sille saadaan laitettua javascript päälle. Mutta tuossa tuli nyt ongelma sitten kuinka saan siinä sen tiedoston avattua.
Kellään hyvää esimerkkiä kuinka saan siis luettua laitteen sd-kortilla olevan html-filun JA suoritettua sillä olevan JavaScriptin?
 
Ja taas Android-ongelmaa puskee...
Eli olen saanut kopioitua emulaattorin sdkortille pienen html-filun joka sisältää javascriptiä.
Nyt tuo filee pitäisi saada auki siten että javascripti suoritetaan.
Kokeilin ensin luoda uuden intentin, ja setDataAndType:llä saan kyllä sivulla määritellyn titlen näkyviin mutta javascript ei käynnisty.
No, sitten pienen googlettelun jälkeen päätin kokeilla WebView:iä koska sille saadaan laitettua javascript päälle. Mutta tuossa tuli nyt ongelma sitten kuinka saan siinä sen tiedoston avattua.
Kellään hyvää esimerkkiä kuinka saan siis luettua laitteen sd-kortilla olevan html-filun JA suoritettua sillä olevan JavaScriptin?
En oikein tajunnut mitä tolla koitat tehdä, mutta: http://blog.tourizo.com/2009/02/how-to-display-local-file-in-android.html
 
Jee, sainhan mie sen toimimaan :)
Koodi:
  WebView webView;
  webView = (WebView) findViewById(R.id.webview);
  webView.getSettings().setJavaScriptEnabled(true);
  URI u = URI.create("file:///sdcard/html/filu.html");
  webView.loadUrl(u.toURL().toExternalForm());
Noin niinkuin siivottuna versiona...
 
Ootteko Android miehet julkaissut jotain markettiin? Aika vähän näyttää olevan vielä suomalaista softaa siellä.

Itse olen julkaissut yhden sovelluksen, IdTravel. Ensimmäinen julkaisemani softa ikinä, joten ei varmasti kauhean laadukas. Tein tuon lähinnä itselleni. Matkustan paljon standby-lipuilla ja tuolla saan lähes tarkkaa tietoa kuinka paljon koneissa on tyhjiä paikkoja. Eli kannattaako koneeseen edes yrittää. Vaikka sovelluksesta on hyötyä vain ID/StandBy matkustajille, niin nyt on jo 650 latausta. Arvio näyttää olevan 3.5 tähteä.

Olen siis ohjelmoinnissa aivan noob, opiskelen alaa ja kiinnostus on kova. Pöytälaatikossa on muutama sovellus, jotka ovat loppusilausta vailla. Jännä miten ohjelmoimalla oppii ohjelmoimaan. Jokainen uusi projekti on edellistä haastavampi.
 
Nyt olisi pieni html & fonttikoko-ongelma.
On olemassa webbisivu joka näkyy Windowsissa ok, ja iPhonen selaimessa näkyy myös kunnolla.
Mutta kun alustaksi vaihdetaan Android niin fonttikoko menee liian pieneksi. No joo, zoomauksellahan tuosta selviää, mutta onko olemassa jotain konstia määritellä fonttikoko alustakohtaisesti?
 
Nyt olisi pieni html & fonttikoko-ongelma.
On olemassa webbisivu joka näkyy Windowsissa ok, ja iPhonen selaimessa näkyy myös kunnolla.
Mutta kun alustaksi vaihdetaan Android niin fonttikoko menee liian pieneksi. No joo, zoomauksellahan tuosta selviää, mutta onko olemassa jotain konstia määritellä fonttikoko alustakohtaisesti?
Onkohan kuitenkin kyse siitä että Android laitteessa olisi fonttikoko määritelty liian pieneksi? Ainakin mun Androidin perusselaimessa on erikseen oma asetus fonttikoolle.

HTML/CSS puolella ei pitäisi olla tarvetta määritellä fonttikokoa erikseen millekään laitteelle. En tiedä missä mättää, jos Android selaimessakin on fonttikoot sopivat (muilla saiteilla fontti ok), mutta voi olla myös huonosti toteutettu sivusto ja Android menee säppiin (tai se yksi selain siinä jota käytetään).

Jos välttämättä silti haluaa erikseen määritellä, niin tällä artikkelilla alkuun: http://developer.android.com/guide/webapps/targeting.html
 
Mobiiliselaimet taitavat määritellä sivun leveydeksi 980px, jos ei sitä ole erikseen määritetty. Sitten tosiaan näyttää fontti pieneltä ellei zoomaa. Tuolta TML linkistä kuin laittaa meta-tagin width=device-width, niin varmaan auttaa. Silloin sivu renderöidään puhelimen resoluution mukaan.

edit. Katos luinkin huonosti. Outo jos Android ainoa missä ei toimi. Voi olla että mobiiliselaimet ei kaikki toimi tuossa samalla tavalla.
 
Nyt olisi pieni html & fonttikoko-ongelma.
On olemassa webbisivu joka näkyy Windowsissa ok, ja iPhonen selaimessa näkyy myös kunnolla.
Mutta kun alustaksi vaihdetaan Android niin fonttikoko menee liian pieneksi. No joo, zoomauksellahan tuosta selviää, mutta onko olemassa jotain konstia määritellä fonttikoko alustakohtaisesti?

Miten asetat sitä fonttikokoa? Olen huomannut, että Windowsissa oikeastaan kaikki muut paitsi Firefox toimivat ihan hyvin jonkin font size="+1" -tyyppisen lauseen kanssa. FF vetää säännöllisesti tekstin pirunb pieneksi. Periaatteessahan tuo ei ole kunnon HTML:ää ollenkaan, että sikäli on paha valittaa. Androidissa Mozilla-pohjainen selain?
 
Eikä edes määrittele varsinaisesti sivua, vaan näkymää. Kyllähän esim. 1200px leveä sivu on edelleen 1200px kun zoomataan. :)

Palatakseni JBoy:n asiaan, niin eihän mistää vain löydy määritelmää "-webkit-text-size-adjust: none;" ? Voisi estää Androidia muuttamasta fonttikokoa sopivaksi. Tosin musta toi on vain ongelma jos käytetään jotain muuta kuin 100% zoomia, eli jotain missä puhelin raksuttaa itse oikeat koot.

Miten asetat sitä fonttikokoa? Olen huomannut, että Windowsissa oikeastaan kaikki muut paitsi Firefox toimivat ihan hyvin jonkin font size="+1" -tyyppisen lauseen kanssa. FF vetää säännöllisesti tekstin pirunb pieneksi. Periaatteessahan tuo ei ole kunnon HTML:ää ollenkaan, että sikäli on paha valittaa. Androidissa Mozilla-pohjainen selain?
Webkit, eli samaa pohjaa Safarin ja Chromen kanssa.

Itse myös veikkaan että pohjalla on hämärä tapa määrittää fonttikokoa. Omissa projekteissa Android ollut aika flawless sivun renderöimisessä.
 
Ei ole tuota "-webkit-text-size-adjust: none;" määrittelyä missään, ja tuohon törmäsin muutamaan otteeseen kun nettiä selailin. Pitää tutkailla noita fonttikokoasetuksia vielä kolmannenkin kerran.
Sen huomasin että ainaskin Dolphin Browser skaalaa tekstin ihan pikkuiseksi piperrykseksi jos tekstin kooksi määritelty "normal" vaikka muut sivut näkyvät ok. Eli fonttimäärityksiin siis.

OffTopic: Mistä löytyisi PDF417-formaatissa oleva viivakoodi jossa on ihan varmasti ääkkösiä mukana? Ei nuo online-generaattorit vissiin tee oikeanlaista koodia. Tai sitten en osaa käyttää. Pitäisi testata onko lukija kunnossa...
 

Latest posts

Suositut

Back
Ylös Bottom