【问题标题】:How to start activity from FREFunction?如何从 FREFunction 开始活动?
【发布时间】:2012-05-29 10:04:47
【问题描述】:

我正在尝试从 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...

但是我在FacebookSSO.java的onCreate方法中的日志调用没有显示出来:

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

【问题讨论】:

  • 您是否偶然发现了这一点?我正在尝试做同样的事情。不过,我正在通过 Flash Builder 运行,所以我实际上不知道如何获取任何 Logcat 信息,因为它似乎只连接到 Flash 调试器。
  • 不。尝试从头开始做,因为这个项目做同样的事情,它对我有用:blog.immanuelnoel.com/2011/12/07/…
  • 该死的。是的,我也注意到了那个项目。我尝试了他们制作 SpeechHandler Activity 的方法,但我认为他们这样做是为了通过返回结果启动真正的语音活动。可悲的是,我也无法让 SpeechHandler 产生我的 Activity。让我知道你是否能正常工作。
  • 它工作正常。就像我说的那样,我是从头开始做的,在我自己导入 Speech 项目并将其字符串结果显示在我的应用程序标签中之后......我真的不知道可能是什么。但我忽略的一件事是在我的 Flex 清单上注册活动,而不仅仅是在原始的 android 清单上。
  • 遗憾的是我都做了,但仍然没有成功。

标签: android apache-flex air-native-extension


【解决方案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>

【讨论】:

    【解决方案2】:

    您正在使用的 Intent constructor 需要一个 Context 作为其参数(请记住,Activity 也是一个 Context。)

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

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

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

    【讨论】:

    • 感谢您的回答。但这不起作用,因为上下文是 FREContext 类型,这意味着未定义的构造函数错误。是否可以进行任何类型的演员表?
    • 啊,对不起,我什么也没得到。不熟悉 Air 平台,没有意识到它有自己的 Context 版本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多