2013-03-27 92 views
0

參考以下鏈接的答案。從其他應用程序選項卡式活動調用安裝應用程序活動?

Android : Call activity of another application

我想它作爲firstTabSpec.setIndicator("Second Tab Name").setContent(new Intent("com.company.package.FOO"));

,但我發現一個

java.lang.SecurityException異常:請求代碼com.company.package(UID爲10036),以在進程中運行com.example.test(使用uid 10037)

其中com.example.test是包c阿靈已安裝的軟件包 「com.company.package.FOO」

com.company.package清單

<activity 
     android:name="com.company.package.Login" 
     android:label="@string/app_name" 
     android:windowSoftInputMode="adjustResize|stateVisible" > 
     <intent-filter> 
      <action android:name="com.company.package.FOO" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 

com.example.test清單

<activity 
     android:name="com.example.test.MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

請讓我知道你是否需要更多細節。

謝謝:)

+1

您不能將其他應用程序的活動嵌入到您自己的應用程序中。 – Luksprog 2013-03-27 07:23:15

+0

他們已經在我發佈的ref鏈接中完成了它。我試着用按鈕單擊工作,但無法在TabActivity中實現它。 – kAnNaN 2013-03-27 07:32:53

+0

這不是一回事。你可以使用一個'Intent'來從另一個應用程序啓動一個新的'Activity',但在你的情況下,使用帶有'Intent'的'setContent()'實際上是通過'Intent'指向的活動構建該選項卡的內容。所以基本上,啓動的Activity將被嵌入在TabActivity中(你不應該首先使用它,因爲它已被棄用),這在Android中是不允許的(導致SecurityException)。 – Luksprog 2013-03-27 07:36:40

回答

2

您可以發送意圖消息來打開其他應用程序活動,但不能在選項卡中使用其他應用程序的活動。充其量你可以做一件事。以某種方式檢測您希望顯示其他應用程序選項卡的選項卡何時切換,並從那裏發送啓動該應用程序的意圖。通過這樣做,您將無法在您的選項卡中顯示該應用程序的活動,但可以像啓動不同的活動一樣啓動應用程序。要做到這一點,你做任何以下

選項1:

說,在選項卡中將要啓動其他應用程序。在標籤A中設置一個空白布局的活動。在該活動的onCreate方法中啓動另一個應用程序。但這是一個問題。當其他應用程序完成時,會有一個空白屏幕。在我的情況下,解決這個問題時,我只是在關閉另一個應用程序時將選項卡切換到主(另一個)選項卡。

選項2:

可以檢測當標籤是通過使用TabHost.OnTabChangeListener監聽器改變。然後你可以做同樣的事情。

方案3:

,也可以通過檢測標籤按鈕點擊做同樣的事情。

無論如何,以上3個選項都只是相同選項的變體。雖然這不是一個好的解決方案,但目前看不到更好的解決方案。希望它能爲你工作。謝謝

3

這是不可能的,以顯示自己的應用程序像各種各樣出於安全原因,一個iframe另一個應用程序的活動。

但是,您可以正常啓動活動並將控制權交給它。

相關問題