我正在製作一個Android應用程序插件。我試圖使其儘可能通用,這對我來說是一個問題。我正在設計插件,以便我製作的任何未來應用都可以輕鬆實現插件。我擁有的問題是插件包含一項服務,該服務會定期通過通知提醒用戶。當用戶打開通知欄並觸摸通知時,需要打開最初啓動服務的活動。如何確定哪個活動啓動了一項服務?
該服務使用此代碼開始:
startService(new Intent(this, myService.class));
以及服務啓動使用此代碼通知:
Intent notificationIntent = new Intent(this, myClass.class);
目前,myClass.class
是硬編碼到通知。這意味着無論我製作多少個不同的應用程序,如果使用此插件,我必須始終命名啓動服務「myClass」的類。
我想要一種通用的方式來獲得啓動服務的原始活動。
那麼,如何把一個類的演員?我知道如何做字符串,整數等等,但是沒有選擇通過一個類作爲額外的選項。 – 2012-03-22 14:56:11
@LucasBailey:一堂課對你來說毫無用處。您指出涉及多個應用程序,並且您的服務不能有其他項目的'Class'對象。最好的答案是讓你通過一個額外的'PendingIntent'傳遞給'Notification',所以客戶端活動可以做出關於標誌等的決定,這可能對它很重要。一個'PendingIntent'是'Parcelable',所以它可以進入額外的'Intent'。 – CommonsWare 2012-03-22 15:00:54
這就是通知服務的工作原理。你必須告訴它當用戶選擇你的通知時啓動哪個類,像這樣... Intent notificationIntent = new Intent(this,someActivity.class);我會考慮傳遞一個未決的意圖。不知道爲什麼我沒有想到它。 – 2012-03-22 15:04:06