2014-04-08 70 views
4

我想分享來自其他應用程序的URL到我的。Android意圖與Cordova - 爲每個共享啓動的新應用程序實例。應該只有一個

我用這PhoneGap的插件來實現意圖:

https://github.com/chrisekelley/olutindo-app/tree/master/plugins/com.borismus.webintent

意圖正在努力,但每次我從其他應用程序共享的目的,我的應用程序的新實例啓動,但我想使用一個實例。如果應用程序已經打開,應該重新初始化應用程序,並使用共享意圖初始化將其置於前面或重新啓動。

我tryed機器人:launchMode =「singleTop」,但會出現相同的行爲,應用程序將被多次打開。

我的清單條目:

<activity android:configChanges="orientation|keyboardHidden|screenSize" 
     android:name=".StartActivity" 
     android:label="@string/app_name" 
     android:launchMode="singleTop" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
     <intent-filter> 
      <action android:name="android.intent.action.VIEW"></action> 
      <category android:name="android.intent.category.DEFAULT"></category> 
      <category android:name="android.intent.category.BROWSABLE"></category> 
      <data android:mimeType="text/plain" /> 
     </intent-filter> 
     <intent-filter> 
      <action android:name="android.intent.action.SEND" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <data android:mimeType="text/plain" /> 
     </intent-filter> 
    </activity> 

這些是我的MainActivity沒有初始化,因爲意圖將通過JavaScript與自身的功能進行初始化(見上文PG插件)。

編輯:我tryed使用Android:launchMode = 「singleInstance」。現在在每個共享請求中,我的應用程序都會被置頂,但意圖不會被初始化。如果應用程序已經啓動,我如何再次用cordova初始化傳入的意圖請求?

謝謝!

回答

3

我不知道如何解決此問題。但我很確定,即使您的代碼是launchMode="singleInstance"或singleTask,操作系統也會爲每個intent.action打開一個不同的實例。

要解決我發現是創建調用了一個獨特的intent.action活動爲您提供空活動的唯一途徑。

final Intent myIntent = new Intent(this, 
MainActivity.class); 
myIntent.setAction("android.intent.action.MAIN"); //myIntent.setAction(Intent.ACTION_MAIN); 
startActivity(myIntent); 

您可以執行偵聽服務。當您嘗試共享啓動的服務時,如果有一個intent.action,它會打開您的活動。

+0

更新:您可以使用SingleTop(同一活動將被帶到前面並更新自己) – DaviF

相關問題