在Titanium完成后立即获得意图结果

时间:2013-11-20 17:47:46

标签: android android-intent titanium

我在Titanium Studio 3.1.3中有一个应用程序扫描QR码来处理它。我是这样做的: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 也许我没有完成活动或意图。

我尝试通过从此代码获取窗口参数来完成活动,但它关闭整个应用程序。我该怎么办?

1 个答案:

答案 0 :(得分:0)

我建议将此代码放在你的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