2014-01-18 73 views
1

我有一個ANE(Adobe本機擴展)自動啓動後BOOT_COMPLETED。它作爲監聽電話狀態更改的服務運行。一切工作正常,直到我需要把主要的AIR活動放在前面才能獲得用戶輸入。我知道如何從服務中獲取上下文,但不知道FREContext。 我已經試過這樣:如何從上下文獲取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

回答

2

爲了使它更通用的一點,你應該使用類似以下內容:

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

這它從上下文中提取軟件包,這應該是ANE所包裝的應用程序。因此,它將啓動ANE所包裝的應用程序,而不是硬編碼應用程序。

+0

這裏是什麼類型的對象是'context'?它是Android上下文還是FREContext? –

+1

'context'是您的應用程序上下文,您可以通過'freContext.getActivity()從FREContext獲取。getApplicationContext()' – Michael

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

我不認爲你應該自己創建擴展類。 有一個人here處理同樣的問題,但顯然的解決方案看起來多一點安全/清晰...