我使用Delphi XE6创建了一个Android应用程序,并使用互联网上的代码连接到ZXing BarCode Scanner。
在只使用此代码的新项目中,一切正常!
如果我添加了多个TabControl
,ToolBar
,Label
,Edit
,Button
和其他标准组件,我就会发生这种情况:
通过调试,应用程序似乎没有停止。返回代码已更正,流程一直持续到结束,不会出现任何错误。
主叫代码是:
function TZXing.ZXingScan: Boolean;
var
Intent: JIntent;
ResolveInfo: JResolveInfo;
begin
Intent := TJIntent.JavaClass.init( StringToJString( 'com.google.zxing.client.android.SCAN' ) );
Intent.setPackage( StringToJString( 'com.google.zxing.client.android' ) );
Intent.putExtra( StringToJString( 'SAVE_HISTORY' ), False );
ResolveInfo := SharedActivity.getPackageManager.resolveActivity( Intent, 0 );
Result := ResolveInfo <> nil;
if Result then
SharedActivity.startActivityForResult( Intent, 0 );
end;
回调程序代码为:
procedure TZXing.OnZXingResult( RequestCode, ResultCode: Integer; Data: JIntent );
begin
TMessageManager.DefaultManager.Unsubscribe( TMessageResultNotification, FMessageSubscriptionID );
FMessageSubscriptionID := 0;
if ( RequestCode = 0 ) and Assigned( FResultProcedure ) then
begin
if ResultCode = TJActivity.JavaClass.RESULT_OK then
begin
if Assigned( Data ) then
Result := ( OK, JStringToString( Data.getStringExtra( StringToJString( 'SCAN_RESULT_FORMAT') ) ), JStringToString( Data.getStringExtra( StringToJString( 'SCAN_RESULT' ) ) ) )
else
Result := ERROR;
end else if ResultCode = TJActivity.JavaClass.RESULT_CANCELED then
Result := CANCELED;
end;
end;
我已经尝试了所有的东西并尝试了一切,但我找不到解决方案。
答案 0 :(得分:0)
最有可能的是,您的结果代码为null
,因为被调用的Activity
必须明确设置它。
在调用onBackPressed()
之前,请尝试覆盖super
将结果代码设置为“已取消”。
答案 1 :(得分:0)
我认为问题可能在于您处理后退按钮的方法。这是我的后台代码:
procedure TFrmBezoekverslag.FormKeyUp(Sender: TObject; var Key: Word;
var KeyChar: Char; Shift: TShiftState);
var
FService: IFMXVirtualKeyboardService;
begin
if Key = vkHardwareBack then
begin
TPlatformServices.Current.SupportsPlatformService
(IFMXVirtualKeyboardService, IInterface(FService));
if (FService <> nil) and (TVirtualKeyboardState.Visible
in FService.VirtualKeyBoardState) then
begin
// Back button pressed, keyboard visible, so do nothing...
end
else
begin
// Back button pressed, keyboard not visible or not supported on this platform
// Here you handle the code too close ZXING
Key := 0; //If you don't want the form too close you need too add key=0
end;
end;
end;
如果你没有帮助,那么问题可能就在formClose方法的某个地方。