2017-01-08 24 views
0

從我的Android應用程序中,我希望能夠顯示本機事件創建屏幕,並且當用戶按下「完成」時,會創建事件並且我想自動返回到我的應用程序。相反,現在發生的事情是,本機日曆應用程序已打開,用戶必須按下後退按鈕才能返回到我的應用程序。如何在意圖開始活動後返回到應用程序?

這是我的代碼:

public void onButtonClicked(View view) { 
    Intent intent = new Intent(Intent.ACTION_EDIT); 
    intent.setType("vnd.android.cursor.item/event"); 
    intent.putExtra(Events.TITLE, "New event"); 
    intent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, new Date().getTime()); 
    intent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, new Date().getTime() + 1000 * 60 * 60); 
    startActivityForResult(intent, 1); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    System.out.println("onActivityResult!"); 
} 

此外,onActivityResult(...)不會被調用。歡迎任何建議!

回答

0

首先,ACTION_EDIT不適用於startActivityForResult(),因爲it does not return anything

除此之外,用戶完成日曆事件編輯時的決定取決於日曆應用的實現者。您正在將工作委託給第三方應用程序;第三方應用程序的功能取決於開發人員。這與將您的網站鏈接到其他人的網站沒有什麼不同:您不選擇該網站的功能。

此外,沒有單一的「原生日曆應用程序」。有數以千計的Android設備型號,原則上它們可以隨身攜帶任何他們想要的東西。這包括對您的Intent做出響應的零個,一個或多個活動。 Play商店或許有的設備安裝了Google日曆,但不一定,並且用戶可以使用其他日曆應用(例如,他們從Play商店或其他地方安裝的應用)。因此,當用戶完成將日曆條目編輯到日曆應用程序的開發人員時,不僅要決定做什麼,還要有許多日曆應用程序,每個應用程序都有自己的開發人員和自己的決定。

當您啓動第三方應用程序時,請不要對結果導航流程做出許多假設。如果你需要這種程度的控制,在這種情況下,你將不得不編寫自己的日曆功能並將其烘焙到你的應用程序中。

+0

我有沒有提到我沒有太多的意向經驗?哈哈。感謝您的快速回答。是否有機會打開默認日曆輸入屏幕而不使用意圖?我可能不得不開始尋找這樣做的默認開源組件。 –

+1

@TomvanZummeren:「有沒有機會打開默認日曆輸入屏幕而不使用意圖?」 - 沒有「默認日曆輸入屏幕」。 – CommonsWare

+0

其實我來自iOS,我只是在尋找EKEventEditViewController的等價物,但我猜Android上沒有這樣的東西。 –

相關問題