1

我有一个 ANE(Adobe Native Extension)在BOOT_COMPLETED. 它作为一项服务运行,以侦听电话状态的变化。一切正常,直到我需要将主要的 AIR 活动放在前面以获得用户输入。我知道如何从服务中获取上下文,但不知道 FREContext。我试过这个:

    myANEContextClass myANEContext = new myANEContextClass ();
    Activity myAIRActivity = myANEContext .getActivity();
    Intent in = new Intent(myAIRActivity,myAIRActivity.getClass()); 
    in.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);

但它不工作,我收到错误:

E/AndroidRuntime( 3451): java.lang.UnsatisfiedLinkError: Native method not found: com.adobe.fre.FREContext.getActivity:()Landroid/app/Activity;

E/AndroidRuntime( 3451): at com.adobe.fre.FREContext.getActivity(Native Method)

但我认为这个过程是存在的,因为后来我得到:

I/ActivityManager( 368): Process air.myANEApp (pid 3451) (adj 5) has died.

所以必须是从进程中获取 FREContext 的一种方法

4

3 回答 3

2

为了使其更通用,您应该使用以下内容:

PackageManager pm = context.getPackageManager();
Intent mainAppIntent = pm.getLaunchIntentForPackage( context.getPackageName() );
mainAppIntent.addFlags( Intent.FLAG_ACTIVITY_REORDER_TO_FRONT );
context.startActivity( mainAppIntent );

通过这种方式,它从上下文中提取包,这应该是 ANE 所在的应用程序。这样它将启动 ANE 所在的应用程序,而不是硬编码的应用程序。

于 2014-01-23T05:36:54.517 回答
0

我解决了它,像这样重新启动应用程序:

 Intent in = arg0.getPackageManager().getLaunchIntentForPackage("air.myANEApp");
 in.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
            |Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT
            |Intent.FLAG_ACTIVITY_NEW_TASK);

 arg0.startActivity(in)
于 2014-01-18T21:57:21.567 回答
0

我认为您不应该自己创建 Extension 类。显然有人在这里处理同样的问题,但解决方案看起来更安全/清晰......

于 2014-01-19T21:37:44.073 回答