Einzelnen Beitrag anzeigen

microtronx

Registriert seit: 8. Mär 2005
Ort: Tapfheim
55 Beiträge
 
Delphi 2010 Enterprise
 
#6

AW: Android: OnNewIntent implementieren

  Alt 23. Mär 2016, 11:51
Für alle die Daten vom Scanner per Intent abrufen wollen:

1.)
Ich verwende diesen Broadcastreceiver: brsatalay.blogspot.com.tr/2014/10/delphi-android-broadcast-receiver.html
den ich wie folgt aktiviere (einmalig):

Delphi-Quellcode:
mxBreceiver.RegisterReceive;
mxBreceiver.Add('org.mein.intent.name');
die Komponente hat einen onIntent Event, den ich wie folgt definiert habe:

Delphi-Quellcode:
procedure TmxBCD.mxBreceiverReceive(Context: JContext; Intent: JIntent);
var
  vInput:String;
begin
  if ansisametext(JStringToString(intent.getAction), 'org.mein.intent.name') then begin
    // jetzt haben wir etwas erhalten
    vInput:=JStringToString(intent.getStringExtra(Stri ngToJString(DATAWEDGE_DATA_STRING)));
    vInput:=trim(vInput);
    dolog('*receive*'+vinput+'*');

    // jetzt prüfen, ist das was angekommen ist eine Funktion oder muss ich ein TExtfeld füllen?
  end else begin
    doLog('*unknown_action*'+JStringToString(Intent.ge tAction)+'*');
  end;
end;
Damit das ganze funktioniert musst Du die androidmanifest xml Datei in deinem Projektverzeichniss wie folgt erweitern:

Code:
...
<activity android:name="com.embarcadero.firemonkey.FMXNative Activity"
android:label="%activityLabel%"
android:configChanges="orientation|keyboard|keyboa rdHidden|screenSize"
android:launchMode="singleTask">
<!-- Tell NativeActivity the name of our .so -->
<meta-data android:name="android.app.lib_name"
android:value="%libNameValue%" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="org.mein.intent.name" /> <!-- HIER die Erweiterung, Rest so belassen -->
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
...
So nun zum Problem bei Datawedge, in Datawedge ein Profil anlegen und nur folgendes aktivieren:

1. bei Verbundene Anwendung wählst Du deine app aus
2. Barcode-Eingabe = Aktiviert
3. MSR Eingabe = Aktiviert
4. Intent Ausgabe = Aktiviert
4.1 Intent-Aktion = org.mein.intent.name
4.2 Intent-Kategorie = LEER LASSEN, nichts eintragen, ist ein Bug von Datawedge
4.3 Intent-Übertragung = Intent Senden

Das wars, bei mir klappt es jetzt hervorragend. Mit dem Edit-Feld hatte ich so meine Probleme, da manchmal der Barcode abgeschnitten wurde usw.

Ich hoffe, ich konnte Dir helfen, kannst ja in deinen Beitrag reinsetzen, damit es auch andere Finden können
Yusuf Zorlu
yusuf.zorlu@microtronx.com

Meine Arbeit ist so geheim ... ich habe selbst keine Ahnung was ich überhaupt mache!
  Mit Zitat antworten Zitat