2013-04-03 27 views
4

我正在編程一個Android應用程序。我想調用其他應用程序來執行某些操作(發送電子郵件等)。我如何知道爲意圖設置了哪個操作和類別?我應該看看其他應用程序的意圖過濾器嗎?如果該應用程序不是開源的呢?另外,對於數據或額外的屬性,我不知道第三方應用程序如何處理我的意圖,所以我不知道如何設置屬性。例如,我想要一個字符串作爲電子郵件的標題,一個字符串作爲電子郵件的內容,另一個字符串作爲收件人,圖片作爲附件。我可以在意圖中包含所有這些信息嗎?如果第三方應用程序不提供任何功能來處理它,該怎麼辦?如何爲意圖設置動作,類別和數據?

+0

請看這裏https://developer.android.com/guide/components/intents-common.html。您不應該擔心哪個第三方應用會處理它,因爲系統會處理它 – Panther

回答

5

通常,對於Android中的常見任務,您可以發送其他應用程序可以註冊的一般意圖。
例如分享一些文字,您將創建一個意圖,如:

Intent sendIntent = new Intent(); 
sendIntent.setAction(Intent.ACTION_SEND); 
sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send."); 
sendIntent.setType("text/plain"); 
startActivity(Intent.createChooser(sendIntent, getResources().getText(R.string.send_to))); 

將促使Android的本機共享對話框中,用戶可以選擇他想要怎樣分享。

具體的電子郵件,你會做這樣的事情:

Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(
        "mailto","[email protected]", null)); 
intent.putExtra(Intent.EXTRA_SUBJECT, "This is my email subject"); 
startActivity(Intent.createChooser(intent, "Email")); 


其他例子可以是啓動默認的短信應用:

Intent sendIntent = new Intent(Intent.ACTION_VIEW);   
sendIntent.setData(Uri.parse("sms:")); 
sendIntent.putExtra("sms_body", getMessageBody()); 

或者打開手機的撥號:

Intent intent = new Intent(Intent.ACTION_CALL); 
     intent.setData(Uri.parse("tel:"+number)); 
     startActivity(intent); 

你需要弄清楚你想在你的應用中實現什麼動作,然後弄清楚如何實現它們中的每一個。

你可以在這裏找到更多的數據:

+0

您能說明如何將附件添加到意圖中嗎? –

1

嘗試使用類別和行動意圖。

Intent mailIntent = new Intent(Intent.ACTION_SEND); 
mailIntent.setType("text/plain"); 
mailIntent.putExtra(Intent.EXTRA_SUBJECT, "Reporting mail"); 
mailIntent.putExtra(Intent.EXTRA_TEXT, "Some message"); 
mailIntent.putExtra(Intent.EXTRA_EMAIL, "[email protected]"); 
startActivity(mailIntent); 

這是一個發送電子郵件的例子。欲瞭解更多信息,請參閱http://developer.android.com/guide/components/intents-common.html

相關問題