Titanium: почему не происходит обратный вызов для startActivityForResult? - PullRequest
3 голосов
/ 21 марта 2012

Я пытаюсь заставить работать приложение-пример IntentCookbook из Forging Titanium (серия 9).

Код здесь: https://github.com/appcelerator-developer-relations/Forging-Titanium/tree/master/ep-009/IntentCookbook

Большинство примеров работают нормально, но когда используется функция "startActivityForResult (intent, callback)", обратный вызов не исключается. Кроме того, при выполнении операции «Захват и просмотр изображения» приложение будет отображаться в альбомной ориентации после возвращения из камеры (я полагаю, потому что оно не понимает, что с камерой все сделано, и должно вернуться в портретную ориентацию.)

Я использую Titanium SDK 1.8.2 и V8-runtime. Я попробовал это на эмуляторе (android sdk 2.3.3 и 3.0) и двух реальных устройствах под управлением 2.3.3 и 2.3.4, но все они демонстрируют одинаковое поведение.

Может кто-нибудь сказать мне, почему это не работает для меня?

РЕДАКТИРОВАТЬ: при попытке «Выбрать и редактировать контакт» это вывод журнала.

I/ActivityManager(   62): Displayed com.appcelerator.IntentCookbook/org.appcelerator.titanium.TiActivity: +350ms
I/ActivityManager(   62): Starting: Intent { act=android.intent.action.PICK typ=vnd.android.cursor.dir/person cmp=com.android.contacts/.ContactsListActivity } from pid 413
I/ContactsListActivity(  194): Called with action: android.intent.action.PICK
I/ActivityManager(   62): Displayed com.android.contacts/.ContactsListActivity: +511ms
W/InputManagerService(   62): Starting input on non-focused client com.android.internal.view.IInputMethodClient$Stub$Proxy@405efe50 (uid=10006 pid=194)

1 Ответ

1 голос
/ 19 сентября 2017

Я знаю, что вопрос старый, но если кто-то все еще сталкивается с подобной проблемой, возможно, мое решение могло бы сработать.Мой код не работал, когда у меня было так:

var activity = Ti.Android.currentActivity;
activity.startActivityForResult(intent, function(e){
    // your code
});

Но потом он работал после того, как я изменил его так:

var activity = $.yourWindowId.getActivity(); // this should be the window you are on
activity.startActivityForResult(intent, function(e){
    // your code
});
...