【问题标题】:Get intent result right after it finish in Titanium在 Titanium 中完成后立即获得意图结果
【发布时间】:2013-11-20 17:47:45
【问题描述】:

我在 Titanium Studio 3.1.3 中有一个应用程序可以扫描二维码来处理它。我这样做:scan_qr.js

function scan_qr() {
    var Window = Ti.UI.createWindow({
            backgroundColor: '#000',
            navBarHidden   : false,
            exitOnClose    : false
        });

    function scan(callback){
        var intent = Ti.Android.createIntent({
            action: 'com.google.zxing.client.android.SCAN'
        });

        intent.putExtra('SCAN_MODE', 'QR_SCAN_MODE');

        var activity = Ti.Android.currentActivity;
        activity.startActivityForResult(intent, function(e) {
            if (e.resultCode == Ti.Android.RESULT_OK) {
                var contents = e.intent.getStringExtra('SCAN_RESULT'),
                    format   = e.intent.getStringExtra('SCAN_RESULT_FORMAT');

                qr_content = contents;
                callback(qr_content);

            } else if (e.resultCode == Ti.Android.RESULT_CANCELED) {
                qr_content = 'canceled';
            }
        });
    };

    return{
        scan: scan
    };
}

module.exports = scan_qr;

以及调用函数:

QR = require('scan_qr')
qr = new QR();
qr.scan(function(qr_code){alert(qr_code)});

但永远不会抛出警报(qr_code);它甚至没有设置 qr_content 也许我没有完成活动或意图。

我试图通过从此代码中获取窗口参数来完成活动,但它关闭了整个应用程序。我能做什么?

【问题讨论】:

  • 最后我发现了问题......主要活动被创建为“重量级窗口”,它在android中创建了一个新活动。并且这个新窗口被创建为子活动,所以直到主活动完成,startActivityForResult 回调被执行。解决方法是将主窗口创建为“轻量级窗口”,并将该窗口(扫描窗口)创建为另一个轻量级窗口,这样它就可以在intent之后完成并执行回调函数。检查link 以获得进一步的解释。

标签: android android-intent titanium


【解决方案1】:

我建议将此代码放在您的 startActivityForResult 函数中,也许您会遇到一些错误,从而为您的问题带来一些启示:

    if (e.error) {
        Ti.API.info('Error: '+e.error);
        Ti.UI.createAlertDialog({
            title:'Error!',
            message:e.error
        }).show();    
    } 

还有一个titanium module to scan barcodes,看看如何在钛上安装模块here。可以在here 找到使用此模块的示例。

【讨论】:

    猜你喜欢
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 2021-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多