1
我在Titanium Studio 3.1.3中有一個應用程序,它掃描QR碼以處理它。我做這種方式:scan_qr.js在Titanium完成後立即獲取意圖結果
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 **回調纔會被執行。 解決方法是將主窗口創建爲「輕量級窗口」,並將此窗口(掃描一個)創建爲其他輕量級窗口,以便它可以在意圖之後完成並執行回調函數。 查看[鏈接](http://docs.appcelerator.com/titanium/latest/#!/api/Titanium.Android.Activity)以獲取進一步說明。 –