2017-10-28 33 views
0

回來後,我有一個應用程序。我希望它在我點擊其他應用程序中的「共享」時出現。然後我希望它處理它收到的數據並返回到調用者應用程序。導航操作意圖過濾

E.g.我分享Facebook發佈:
1)我的應用程序打開
2)信息保存到DB
3)返回到FB後

這怎麼能恢復到FB後可以實現嗎?

我試過指callingActivity,但它是空的。

意圖過濾器:

<intent-filter android:label="@string/app_name"> 
      <action android:name="android.intent.action.SEND"/> 
      <category android:name="android.intent.category.DEFAULT"/> 
      <data android:mimeType="*/*"/> 
</intent-filter> 

活動:

override fun onCreate(savedInstanceState: Bundle?) { 
    super.onCreate(savedInstanceState) 
    setContentView(R.layout.activity_main) 

    val intent = intent 
    val action = intent.action 
    val type = intent.type 


    if (intent.getStringExtra(Intent.EXTRA_TEXT) != null) { 

     // do some processing 

     // goes recursively 
     startActivity(intent) 
    } 

} 
+0

你可以發佈你的當前代碼,所以我們可以看到你有多遠?您是否獲得了數據在您的應用程序,但無法處理或者數據永遠不會讓你的應用程序? – SRoseDev88

+0

@ SRoseDev88,我已經更新了這個問題,但我沒有太多 問題是我必須在處理完數據後再次打開FB應用程序 –

回答

0

從共享不管應用程序將是你目前的應用程序背後活躍的,所以你就可以分享給你的應用程序,然後就停止你應用程序使用finish()。我做了一個快速測試,並能夠使用這種方法分享幾個應用程序。您的應用程序會閃爍起來,然後用戶將土地還給他們中從後您的數據庫寫入完成共享的應用程序。我登錄的意圖,以確保它是通過適當的到來,能看到來自Chrome的連結(作爲一個例子)。

if (intent.getStringExtra(Intent.EXTRA_TEXT) != null) { 

     // do some processing 
     Log.d("Extras", intent.getStringExtra(Intent.EXTRA_TEXT)) 

     // goes recursively 
     finish() 
    } 
+0

並且如果處理需要很長時間?有沒有辦法在後臺啓動它?或者只是最小化我的應用程序,以便調用應用程序顯示 –

+0

您可以將您的過程變成服務,這將允許它在後臺運行。您的應用內代碼可以解析數據,然後將其傳遞給服務。該數據通過後,你可以關閉應用程序,並允許服務做的工作背景。 – SRoseDev88