如何从FREFunction开始活动?

时间:2012-05-22 20:59:48

标签: android flex air-native-extension

我正在尝试从FREFunction开始并在我的flex应用程序中使用facebooks的SSO。

我在我的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。 我究竟做错了什么?

2 个答案:

答案 0 :(得分:1)

你解决了这个问题吗?

您是否尝试将类添加到应用程序描述符中的清单添加中?

<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>

答案 1 :(得分:0)

您正在使用的Intent constructor期望将Context作为其参数(请记住Activity 也是上下文。)

因为构造函数需要一个Context而你是从一个上下文开始的,所以不需要调用getActivity()。另外startActivity()Context的方法,所以你不应该在第二行中需要getActivity()。但是我不知道这是否会导致你看到的错误。

以这种方式尝试您的代码:

Intent myIntent = new Intent(context, FacebookSSO.class);
context.startActivity(myIntent);