Как запустить активность из FREFunction?

Я пытаюсь начать работу с FREFunction, чтобы использовать SSO facebooks в моем гибком приложении.

Я сделал в своей FREFunction:

    @Override
    public FREObject call(FREContext context, FREObject[] args) {
         Intent myIntent = new Intent(context.getActivity(), FacebookSSO.class);
         context.getActivity().startActivity(myIntent);
         return null;
    }

Я получаю с logcat:

I/ActivityManager( 1322): Starting activity: 
Intent{ cmp=air.testapp/com.test.android.ane.activity.FacebookSSO } from pid...

Но мои вызовы журнала в методе onCreate для FacebookSSO.java не отображаются:

 @Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     //setContentView(R.layout.main);
     Log.d("FacebookSSO", "onCreate BEGIN.");
     Log.d("FacebookSSO", "onCreate END.");
 }

Я пытался создать myIntent разными способами, например, используя setClass. Что я делаю не так?


person Melladric    schedule 22.05.2012    source источник
comment
Вы случайно не догадались об этом? Я пытаюсь сделать то же самое. Тем не менее, я использую Flash Builder, поэтому на самом деле я не знаю, как получить какую-либо информацию Logcat, поскольку кажется, что он подключается только к отладчику Flash.   -  person Tylo    schedule 23.05.2012
comment
Неа. Попытка сделать это с нуля, потому что этот проект делает то же самое, и у меня это сработало: blog.immanuelnoel.com/2011/12/07/   -  person Melladric    schedule 24.05.2012
comment
Проклятие. Да, я тоже заметил этот проект. Я попробовал их метод создания действия SpeechHandler, но я думаю, что они сделали это как своего рода обходной путь для запуска истинного речевого действия с возвращаемым результатом. К сожалению, я также не смог заставить SpeechHandler создавать мою активность. Дайте мне знать, если у вас это получится.   -  person Tylo    schedule 25.05.2012
comment
Это работает. Как я уже сказал, я сделал это с нуля, после того, как самостоятельно импортировал проект Speech и отобразил его строковый результат в метке моего приложения... Я действительно понятия не имею, что могло быть. Но одной из вещей, которыми я пренебрегал, была регистрация активности в моем манифесте Flex, а НЕ только в исходном манифесте Android.   -  person Melladric    schedule 28.05.2012
comment
К сожалению, я сделал и то, и другое, и это все еще никогда не работало.   -  person Tylo    schedule 01.06.2012


Ответы (2)


Вы решили эту проблему?

Вы пытались добавить класс в дополнения манифеста в дескрипторе приложения?

<android>
    <manifestAdditions><![CDATA[
        <manifest android:installLocation="auto">
            <uses-permission android:name="android.permission.INTERNET"/>
            <application>
                <activity android:name="com.test.android.ane.activity.FacebookSSO"></activity>
            </application>
        </manifest>
    ]]></manifestAdditions>
</android>
person Michael    schedule 17.08.2012

Конструктор намерений, который вы используете, ожидает Context в качестве своего параметра (помните, что Активность также является Контекстом.)

Поскольку конструктор ожидает контекст, и вы начинаете с контекста, нет необходимости вызывать getActivity(). Также startActivity() является методом Context, так что getActivity() во второй строке тоже не нужен. Однако я не знаю, приведет ли это к ошибке, которую вы видите.

Попробуйте свой код следующим образом:

Intent myIntent = new Intent(context, FacebookSSO.class);
context.startActivity(myIntent);
person FoamyGuy    schedule 22.05.2012
comment
Спасибо за ответ. Но это не сработает, потому что контекст имеет тип FREContext, что означает ошибку неопределенного конструктора. Возможен ли какой-либо актерский состав? - person Melladric; 23.05.2012
comment
Ах, извините, у меня тогда ничего не было. Я не знаком с платформой Air, не знал, что у нее есть собственная версия Context. - person FoamyGuy; 23.05.2012