Page 2 of 2 FirstFirst 1 2
Results 16 to 25 of 25

Thread: SMS Ontvangen

  1. #16
    Anders moet je alleen even body en date gebruiken en zo kijken of je wel alles terug krijgt.
    Ook daarbij krijg ik al die fout melding (nu wel op een ander adres).
    Click image for larger version. 

Name:	6.jpg 
Views:	146 
Size:	90.4 KB 
ID:	7688

  2. #17
    Je moet de regels die daaronder staan natuurlijk ook uitcommenten (die gebruik maken van bijvoorbeeld addressidx e.d.).

    Tevens... waarom plaats je een screenshot en niet gewoon de source kopiëren en tussen tags plaatsen?

    Heb je ook geprobeerd om te achterhalen op welke regel exact je de foutmelding krijgt?
    (debuggen !!!!)

  3. #18
    Je moet de regels die daaronder staan natuurlijk ook uitcommenten (die gebruik maken van bijvoorbeeld addressidx e.d.).
    Ik heb er nu dit van gemaakt en krijg nog steeds de fout melding:

    Code:
    function FetchSms:string;
    var
     cursor: JCursor;
     uri: Jnet_Uri;
     address,person,msgdatesent,protocol,msgread,msgstatus,msgtype,
     msgreplypathpresent,subject,body,
     servicecenter,locked:string;
     msgunixtimestampms:int64;
     addressidx,personidx,msgdateidx,msgdatesentidx,protocolidx,msgreadidx,
     msgstatusidx,msgtypeidx,msgreplypathpresentidx,subjectidx,bodyidx,
     servicecenteridx,lockedidx:integer;
    
    begin
     //uri:=StrToJURI('content://sms/inbox');
     uri:=StrToJURI('content://sms/all');
    
     cursor := SharedActivity.getContentResolver.query(uri, nil, nil,nil,nil);
    
     //addressidx:=cursor.getColumnIndex(StringToJstring('address'));
     //personidx:=cursor.getColumnIndex(StringToJstring('person'));
     msgdateidx:=cursor.getColumnIndex(StringToJstring('date'));
     //msgdatesentidx:=cursor.getColumnIndex(StringToJstring('date_sent'));
     //protocolidx:=cursor.getColumnIndex(StringToJstring('protocol'));
     //msgreadidx:=cursor.getColumnIndex(StringToJstring('read'));
     //msgstatusidx:=cursor.getColumnIndex(StringToJstring('status'));
     //msgtypeidx:=cursor.getColumnIndex(StringToJstring('type'));
     //msgreplypathpresentidx:=cursor.getColumnIndex(StringToJstring('reply_path_present'));
     //subjectidx:=cursor.getColumnIndex(StringToJstring('subject'));
     bodyidx:=cursor.getColumnIndex(StringToJstring('body'));
     //servicecenteridx:=cursor.getColumnIndex(StringToJstring('service_center'));
     //lockedidx:=cursor.getColumnIndex(StringToJstring('locked'));
    
    
     while (cursor.moveToNext) do
      begin
       //address:=JStringToString(cursor.getString(addressidx));
       //person:=JStringToString(cursor.getString(personidx));
       msgunixtimestampms:=cursor.getLong(msgdateidx);
       //msgdatesent:=JStringToString(cursor.getString(msgdatesentidx));
       //protocol:=JStringToString(cursor.getString(protocolidx));
       //msgread:=JStringToString(cursor.getString(msgreadidx));
       //msgstatus:=JStringToString(cursor.getString(msgstatusidx));
       //msgtype:=JStringToString(cursor.getString(msgtypeidx));
       //msgreplypathpresent:=JStringToString(cursor.getString(msgreplypathpresentidx));
       //subject:=JStringToString(cursor.getString(subjectidx));
       body:=JStringToString(cursor.getString(bodyidx));
       //servicecenter:=JStringToString(cursor.getString(servicecenteridx));
       //locked:=JStringToString(cursor.getString(lockedidx));
    
       Result := Result + #13 + IntToStr(trunc(msgunixtimestampms / 1000)) + ' ' + address + ' ' + body;
    
      end;
    
    end;
    Tevens... waarom plaats je een screenshot en niet gewoon de source kopiëren en tussen tags plaatsen?
    Bij deze

    Heb je ook geprobeerd om te achterhalen op welke regel exact je de foutmelding krijgt?
    (debuggen !!!!)
    Ik heb al eens een poging gedaan om te debuggen maar weet niet precies hoe ik dat moet doen.
    Ik compileer in de Debug mode, maar waar kan ik precies zien op welke regel het mis gaat ?

    Ik krijg info als dit:
    Module Load: linker. Has Debug Info. Base Address: $B6F63970. Process SMS.apk (23716)
    Module Load: libc.so. Has Debug Info. Base Address: $B6EF6228. Process SMS.apk (23716)
    Module Load: libm.so. No Debug Info. Base Address: $00000000. Process SMS.apk (23716)

  4. #19
    Quote Originally Posted by MMSoft View Post
    Ik heb al eens een poging gedaan om te debuggen maar weet niet precies hoe ik dat moet doen.
    Ik compileer in de Debug mode, maar waar kan ik precies zien op welke regel het mis gaat ?
    Gebruik je F9 (run) want die is met debugging.
    Dan zou ie gewoon moeten stoppen op de verkeerde regel.

    Anders moet je, zoals ik al eerder aangegeven heb, een paar log (of showmessages) regels toevoegen om te kijken tot waar die precies loopt.

  5. #20
    Gebruik je F9 (run) want die is met debugging.
    Dan zou ie gewoon moeten stoppen op de verkeerde regel.
    Geen idee waarom dat bij mij niet werkt, het project wordt gecompileerd en op de GSM geinstalleed en de App start (en geeft de fout melding) in XE10.1 wordt de probleem regel niet weergegeven.

    Anders moet je, zoals ik al eerder aangegeven heb, een paar log (of showmessages) regels toevoegen om te kijken tot waar die precies loopt.
    Log zegt mij ook niets, dus een serie showmessages geplaatst.

    Code:
    begin
     //uri:=StrToJURI('content://sms/inbox');
     uri:=StrToJURI('content://sms/all');
    showmessage('0');
    
     cursor := SharedActivity.getContentResolver.query(uri, nil, nil,nil,nil);
    showmessage('1');
     //addressidx:=cursor.getColumnIndex(StringToJstring('address'));
     //personidx:=cursor.getColumnIndex(StringToJstring('person'));
     msgdateidx:=cursor.getColumnIndex(StringToJstring('date'));
    showmessage('2');
    De melding 1 is de laatste die weergegeven wordt, dus lijkt het fout te gaan in regel: msgdateidx:=cursor.getColumnIndex(StringToJstring( 'date'));

  6. #21
    cursor is nil na de cursor := regel.
    Doe maar eens:
    if cursor = nil then showmessage('cursor is nil');
    onder die regel.

    Waarom dat niet werkt weet ik niet.
    Je kunt nog content://sms proberen.
    Die werkt bij mij wel.

    Maar ik heb ook geen idee waarom bij jou niet alle SMS'jes weergegeven worden.

  7. #22
    Code:
    begin
     //uri:=StrToJURI('content://sms/inbox');
     uri:=StrToJURI('content://sms/all');
    showmessage('0');
    
     cursor := SharedActivity.getContentResolver.query(uri, nil, nil,nil,nil);
    if cursor = nil then showmessage('cursor is nil');
     //addressidx:=cursor.getColumnIndex(StringToJstring('address'));
     //personidx:=cursor.getColumnIndex(StringToJstring('person'));
     msgdateidx:=cursor.getColumnIndex(StringToJstring('date'));
    showmessage('2');
     //msgdatesentidx:=cursor.getColumnIndex(StringToJstring('date_sent'));
     //protocolidx:=cursor.getColumnIndex(StringToJstring('protocol'));
     //msgreadidx:=cursor.getColumnIndex(StringToJstring('read'));
     //msgstatusidx:=cursor.getColumnIndex(StringToJstring('status'));
     //msgtypeidx:=cursor.getColumnIndex(StringToJstring('type'));
     //msgreplypathpresentidx:=cursor.getColumnIndex(StringToJstring('reply_path_present'));
     //subjectidx:=cursor.getColumnIndex(StringToJstring('subject'));
     bodyidx:=cursor.getColumnIndex(StringToJstring('body'));
    showmessage('3');
    cursor is nil wordt getoond, 2 niet.

    uri:=StrToJURI('content://sms/all');
    gewijzigd in
    uri:=StrToJURI('content://sms');

    Dit is een hele stap vooruit, het laatste SMSje wordt nu getoond, helaas loopt dan ook meteen de App muurvast...
    Vreemd: Er wordt nu geen enkele showmessage getoond !

    Edit:
    Het lijkt erop dat nu juist de showmessages voor het probleem zorgen, want met de oude code en alleen regel

    uri:=StrToJURI('content://sms/all');
    gewijzigd in
    uri:=StrToJURI('content://sms');

    Lijkt het goed te werken....
    Last edited by MMSoft; 08-Dec-17 at 17:02.

  8. #23
    Ik probeer alleen de laatste SMS uit te lezen en denk dat ik daarvoor deze regel aan moet passen
    Code:
    while (cursor.moveToNext) do
    Maar omdat ik nog niet precies weet hoe deze code werkt, en ik deze code niet wil verprutsen toch even de vraag hoe ik dit het beste kan doen ?

  9. #24
    Gewoon wat dingen proberen.
    Dat is ook programmeren.

    Wat kun je verprutsen???
    Je kunt toch altijd de oorspronkelijke code weer terugzetten?

    Je wilt dus cursor.moveToNext doen tot de laatste en dan pas de properties uitlezen.
    Ga je gang.

  10. #25
    Zo wordt er alleen de laatste SMS getoond:
    Code:
     servicecenteridx:=cursor.getColumnIndex(StringToJstring('service_center'));
     lockedidx:=cursor.getColumnIndex(StringToJstring('locked'));
    
    // while (cursor.moveToNext) do
    //  begin
       cursor.moveToNext;
    
       address:=JStringToString(cursor.getString(addressidx));
       person:=JStringToString(cursor.getString(personidx));
       msgunixtimestampms:=cursor.getLong(msgdateidx);
       msgdatesent:=JStringToString(cursor.getString(msgdatesentidx));
       protocol:=JStringToString(cursor.getString(protocolidx));
       msgread:=JStringToString(cursor.getString(msgreadidx));
       msgstatus:=JStringToString(cursor.getString(msgstatusidx));
       msgtype:=JStringToString(cursor.getString(msgtypeidx));
       msgreplypathpresent:=JStringToString(cursor.getString(msgreplypathpresentidx));
       subject:=JStringToString(cursor.getString(subjectidx));
       body:=JStringToString(cursor.getString(bodyidx));
       servicecenter:=JStringToString(cursor.getString(servicecenteridx));
       locked:=JStringToString(cursor.getString(lockedidx));
    
       //Result := Result + #13 + IntToStr(trunc(msgunixtimestampms / 1000)) + ' ' + address + ' ' + body;
       Result := IntToStr(trunc(msgunixtimestampms / 1000)) + ' ' + address + ' ' + body;
    //  end;
    
    end;
    Iedereen die mee gedacht heeft bedankt !

Page 2 of 2 FirstFirst 1 2

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •